crud

package
v0.0.2-rc-ci Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2024 License: AGPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OrderAsc  = SortOrder("ASC")
	OrderDesc = SortOrder("DESC")
)

Possible values for SortOrder.

Variables

This section is empty.

Functions

This section is empty.

Types

type FindParams

type FindParams[Filters any] struct {
	Offset int64 `json:"offset,omitempty"`
	Limit  int64 `json:"limit,omitempty"`

	Sort  string    `json:"sort,omitempty"`
	Order SortOrder `json:"order,omitempty"`

	Filters *Filters `json:"filters,omitempty"`
}

FindParams defines parameters used by Find methods.

type Handler

type Handler[NewModel any, Model Identifiable, Filters any] struct {
	// contains filtered or unexported fields
}

func NewHandler

func NewHandler[NewModel any, Model Identifiable, Filters any](storer Storer[NewModel, Model, Filters]) *Handler[NewModel, Model, Filters]

func (*Handler[NewModel, Model, Filters]) Create

func (h *Handler[NewModel, Model, Filters]) Create(w http.ResponseWriter, r *http.Request)

func (*Handler[NewModel, Model, Filters]) Delete

func (h *Handler[NewModel, Model, Filters]) Delete(w http.ResponseWriter, r *http.Request)

func (*Handler[NewModel, Model, Filters]) Find

func (h *Handler[NewModel, Model, Filters]) Find(w http.ResponseWriter, r *http.Request)

func (*Handler[NewModel, Model, Filters]) FindByID

func (h *Handler[NewModel, Model, Filters]) FindByID(w http.ResponseWriter, r *http.Request)

func (*Handler[NewModel, Model, Filters]) Update

func (h *Handler[NewModel, Model, Filters]) Update(w http.ResponseWriter, r *http.Request)

type IDGeneratorFunc

type IDGeneratorFunc[NewModel any] func(newModel *NewModel) string

IDGeneratorFunc takes a new model and returns generates an identifier for it.

type Identifiable

type Identifiable interface {
	// Identifier returns the unique identifier of the object.
	Identifier() string
}

Identifiable is an object with an identifier.

type MemoryStore

type MemoryStore[NewModel any, Model Identifiable, Filters any] struct {
	// contains filtered or unexported fields
}

MemoryStore implements a generic model store in memory.

func NewMemoryStore

func NewMemoryStore[NewModel any, Model Identifiable, Filters any](modelFromNewModel NewModelFunc[NewModel, Model], idGenerator IDGeneratorFunc[NewModel]) *MemoryStore[NewModel, Model, Filters]

NewMemoryStore returns a new memory store.

func (*MemoryStore[NewModel, Model, Filters]) Create

func (m *MemoryStore[NewModel, Model, Filters]) Create(ctx context.Context, newModel *NewModel) (*Model, error)

Create adds a new model to the store.

func (*MemoryStore[NewModel, Model, Filters]) Delete

func (m *MemoryStore[NewModel, Model, Filters]) Delete(ctx context.Context, id string) error

Delete deletes an existing model. It returns an error if the model did not exist before.

func (*MemoryStore[NewModel, Model, Filters]) Find

func (m *MemoryStore[NewModel, Model, Filters]) Find(ctx context.Context, params *FindParams[Filters]) ([]*Model, int, error)

Find returns a list of models.

func (*MemoryStore[NewModel, Model, Filters]) FindByID

func (m *MemoryStore[NewModel, Model, Filters]) FindByID(ctx context.Context, id string) (*Model, error)

FindByID returns the model with the given id. It returns nil, when the model was not found.

func (*MemoryStore[NewModel, Model, Filters]) Update

func (m *MemoryStore[NewModel, Model, Filters]) Update(ctx context.Context, model *Model) (*Model, error)

Update updates an existing model. It returns an error, if the model did not exist before.

type NewModelFunc

type NewModelFunc[NewModel any, Model Identifiable] func(newModel *NewModel, id string) *Model

NewModelFunc take a new model and an id and returns a model.

type SortOrder

type SortOrder string

SortOrder defines the order of sorting.

type SqlStore

type SqlStore[NewModel any, Model Identifiable, Filter any] struct {
	// contains filtered or unexported fields
}

func NewSqlStore

func NewSqlStore[NewModel any, Model Identifiable, Filters any](db *sqlx.DB, table SqlTable[Filters], modelFromNewModel NewModelFunc[NewModel, Model], idGenerator IDGeneratorFunc[NewModel]) *SqlStore[NewModel, Model, Filters]

NewSqlStore returns a new generic sql store.

func (*SqlStore[NewModel, Model, Filter]) Create

func (s *SqlStore[NewModel, Model, Filter]) Create(ctx context.Context, newModel *NewModel) (*Model, error)

func (*SqlStore[NewModel, Model, Filter]) Delete

func (s *SqlStore[NewModel, Model, Filter]) Delete(ctx context.Context, id string) error

func (*SqlStore[NewModel, Model, Filter]) Find

func (s *SqlStore[NewModel, Model, Filter]) Find(ctx context.Context, params *FindParams[Filter]) ([]*Model, int, error)

func (*SqlStore[NewModel, Model, Filter]) FindByID

func (s *SqlStore[NewModel, Model, Filter]) FindByID(ctx context.Context, id string) (*Model, error)

func (*SqlStore[NewModel, Model, Filter]) Update

func (s *SqlStore[NewModel, Model, Filter]) Update(ctx context.Context, model *Model) (*Model, error)

type SqlTable

type SqlTable[Filter any] struct {
	Table          string
	IDField        string
	Fields         []string
	SortableFields []string
}

type Storer

type Storer[NewModel any, Model Identifiable, Filters any] interface {
	Create(ctx context.Context, newModel *NewModel) (*Model, error)
	Update(ctx context.Context, model *Model) (*Model, error)
	Delete(ctx context.Context, id string) error
	FindByID(ctx context.Context, id string) (*Model, error)
	Find(ctx context.Context, params *FindParams[Filters]) ([]*Model, int, error)
}

Storer defines a generic crud store.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL