Documentation
¶
Index ¶
- func CreateDefinition[Entity database.Mutator](cfg *CreateConfig[Entity], url string, stack endpoint.Stack, ...) *endpoint.DefaultDefinition
- func CreateErrors() errutil.ExpectedErrors
- func DefaultCreateHandler[Entity database.Mutator](connFn db.ConnFn, mutatorRepo db.MutatorRepository[Entity], ...) *services.CreateHandler[Entity]
- func DefaultDeleteHandler[Entity database.Mutator](connFn db.ConnFn, entityFn func(opts ...db.EntityOption[Entity]) Entity, ...) *services.DeleteHandler[Entity]
- func DefaultGetHandler[Entity database.Getter](connFn db.ConnFn, readerRepo db.ReaderRepository[Entity], ...) *services.GetHandler[Entity]
- func DefaultUpdateHandler[Entity database.Mutator](connFn db.ConnFn, entityFn func(opts ...db.EntityOption[Entity]) Entity, ...) *services.UpdateHandler[Entity]
- func DeleteDefinition[Entity database.Mutator](cfg *DeleteConfig[Entity], url string, stack endpoint.Stack, ...) *endpoint.DefaultDefinition
- func DeleteErrors() errutil.ExpectedErrors
- func GetDefinition[Entity database.Getter](cfg *GetConfig[Entity], url string, stack endpoint.Stack, ...) *endpoint.DefaultDefinition
- func GetErrors() errutil.ExpectedErrors
- func UpdateDefinition[Entity database.Mutator](cfg *UpdateConfig[Entity], url string, stack endpoint.Stack, ...) *endpoint.DefaultDefinition
- func UpdateErrors() errutil.ExpectedErrors
- type CRUDConfig
- type CRUDDefinitions
- type CRUDOperation
- type CRUDOption
- type CreateConfig
- type CreateHandler
- type DefaultCRUDConfig
- type DefaultCreateHandlerLogicConfig
- type DefaultCreateInputHandlerConfig
- type DefaultDeleteHandlerLogicConfig
- type DefaultDeleteInput
- type DefaultDeleteInputHandlerConfig
- type DefaultDeleteOutput
- type DefaultGetHandlerLogicConfig
- type DefaultGetInput
- type DefaultGetInputHandlerConfig
- type DefaultGetOutput
- type DefaultUpdateHandlerLogicConfig
- type DefaultUpdateInput
- type DefaultUpdateInputHandlerConfig
- type DefaultUpdateOutput
- type DeleteConfig
- type DeleteHandler
- type GetConfig
- type GetHandler
- type UpdateConfig
- type UpdateHandler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateDefinition ¶
func CreateDefinition[Entity database.Mutator]( cfg *CreateConfig[Entity], url string, stack endpoint.Stack, emitterLogger event.EmitterLogger, ) *endpoint.DefaultDefinition
CreateDefinition creates a definition for the create endpoint.
func CreateErrors ¶
func CreateErrors() errutil.ExpectedErrors
func DefaultCreateHandler ¶
func DefaultCreateHandler[Entity database.Mutator]( connFn db.ConnFn, mutatorRepo db.MutatorRepository[Entity], txManager db.TxManager[Entity], outputFactoryFn func() services.CreateOutputer[Entity], beforeCallback services.BeforeCreateCallback[Entity], afterCreateFn services.AfterCreate[Entity], ) *services.CreateHandler[Entity]
DefaultCreateHandler sets up an endpoint handler for the create operation.
func DefaultDeleteHandler ¶
func DefaultDeleteHandler[Entity database.Mutator]( connFn db.ConnFn, entityFn func(opts ...db.EntityOption[Entity]) Entity, apiToDBFields inpututil.APIToDBFields, outputFactoryFn func() services.DeleteOutputer, beforeCallback services.BeforeDeleteCallback[Entity], mutatorRepo db.MutatorRepository[Entity], txManager db.TxManager[*int64], afterDeleteFn services.AfterDelete, ) *services.DeleteHandler[Entity]
DefaultDeleteHandler sets up an endpoint handler for the delete operation.
func DefaultGetHandler ¶
func DefaultGetHandler[Entity database.Getter]( connFn db.ConnFn, readerRepo db.ReaderRepository[Entity], txManager db.TxManager[Entity], entityFn func(opts ...db.EntityOption[Entity]) Entity, apiToDBFields inpututil.APIToDBFields, outputFactoryFn func() services.GetOutputer[Entity], beforeCallback services.BeforeGetCallback, afterGetFn services.AfterGet[Entity], ) *services.GetHandler[Entity]
DefaultGetHandler sets up an endpoint handler for the get operation.
func DefaultUpdateHandler ¶
func DefaultUpdateHandler[Entity database.Mutator]( connFn db.ConnFn, entityFn func(opts ...db.EntityOption[Entity]) Entity, apiToDBFields inpututil.APIToDBFields, outputFactoryFn func() services.UpdateOutputer, beforeCallback services.BeforeUpdateCallback[Entity], mutatorRepo db.MutatorRepository[Entity], txManager db.TxManager[*int64], afterUpdateFn services.AfterUpdate[Entity], ) *services.UpdateHandler[Entity]
DefaultUpdateHandler sets up an endpoint handler for the update operation.
func DeleteDefinition ¶
func DeleteDefinition[Entity database.Mutator]( cfg *DeleteConfig[Entity], url string, stack endpoint.Stack, emitterLogger event.EmitterLogger, ) *endpoint.DefaultDefinition
DeleteDefinition creates a definition for the delete endpoint.
func DeleteErrors ¶
func DeleteErrors() errutil.ExpectedErrors
func GetDefinition ¶
func GetDefinition[Entity database.Getter]( cfg *GetConfig[Entity], url string, stack endpoint.Stack, emitterLogger event.EmitterLogger, ) *endpoint.DefaultDefinition
GetDefinition creates a definition for the get endpoint.
func GetErrors ¶
func GetErrors() errutil.ExpectedErrors
func UpdateDefinition ¶
func UpdateDefinition[Entity database.Mutator]( cfg *UpdateConfig[Entity], url string, stack endpoint.Stack, emitterLogger event.EmitterLogger, ) *endpoint.DefaultDefinition
UpdateDefinition creates a definition for the update endpoint.
func UpdateErrors ¶
func UpdateErrors() errutil.ExpectedErrors
Types ¶
type CRUDConfig ¶
type CRUDConfig[Entity database.CRUDEntity] struct { SystemID string URL string Stack endpoint.Stack EmitterLogger event.EmitterLogger ConnFn db.ConnFn APIToDBFields inpututil.APIToDBFields ConversionRules map[string]func(any) any CustomRules map[string]func(any) error Create *CreateConfig[Entity] Get *GetConfig[Entity] Update *UpdateConfig[Entity] Delete *DeleteConfig[Entity] }
CRUDConfig holds all the settings for the CRUD endpoints.
func NewDefaultCRUDConfig ¶
func NewDefaultCRUDConfig[Entity database.CRUDEntity]( cfg *DefaultCRUDConfig[Entity], ) *CRUDConfig[Entity]
NewDefaultCRUDConfig returns a new CRUDConfig using the default settings.
func (*CRUDConfig[Entity]) MustValidate ¶
func (cfg *CRUDConfig[Entity]) MustValidate() *CRUDConfig[Entity]
MustValidate validates the config and sets defaults and returns a new config. It panics if validation fails.
func (*CRUDConfig[Entity]) Validate ¶
func (cfg *CRUDConfig[Entity]) Validate() (*CRUDConfig[Entity], error)
Validate validates the config and sets defaults and returns a new config.
func (*CRUDConfig[Entity]) ValidateMainCRUDConfig ¶
func (cfg *CRUDConfig[Entity]) ValidateMainCRUDConfig() ( *CRUDConfig[Entity], error, )
ValidateMainCRUDConfig validates the main config and sets defaults It returns a new config with the defaults set.
type CRUDDefinitions ¶
type CRUDDefinitions struct {
Endpoints map[CRUDOperation]endpoint.Definition
}
CRUDDefinitions holds a collection of enabled endpoint definitions.
func NewCRUDDefinitions ¶
func NewCRUDDefinitions[Entity database.CRUDEntity]( cfg *CRUDConfig[Entity], ) *CRUDDefinitions
NewCRUDDefinitions creates endpoint definitions based on the enabled ops.
type CRUDOperation ¶
type CRUDOperation string
CRUDOperation defines the type of CRUD operations.
const ( OpCreate CRUDOperation = "create" OpGet CRUDOperation = "get" OpUpdate CRUDOperation = "update" OpDelete CRUDOperation = "delete" )
Supported CRUD operations.
type CRUDOption ¶
type CRUDOption[Entity database.CRUDEntity] func(*CRUDConfig[Entity])
CRUDOption represents a functional option for configuring CRUDConfig.
type CreateConfig ¶
type CreateConfig[Entity database.Mutator] struct { // Default config for the create input handler. DefaultInputHandlerConfig *DefaultCreateInputHandlerConfig[Entity] // Override config for the create handler logic. InputHandlerFactoryFn func() endpoint.InputHandler[services.CreateInputer[Entity]] // Default config for the create handler logic. DefaultHandlerLogicConfig *DefaultCreateHandlerLogicConfig[Entity] // Override for the create handler logic. HandlerLogicFnFactoryFn func() endpoint.HandlerLogicFn[services.CreateInputer[Entity]] ErrorHandlerFactoryFn func() endpoint.ErrorHandler OutputHandlerFactoryFn func() endpoint.OutputHandler }
CreateConfig holds the configuration for the create endpoint.
func (*CreateConfig[Entity]) Validate ¶
func (cfg *CreateConfig[Entity]) Validate( systemID string, emitterLogger event.EmitterLogger, conversionRules map[string]func(any) any, customRules map[string]func(any) error, connFn db.ConnFn, ) (*CreateConfig[Entity], error)
Validate validates and sets defaults for the create config. It returns a new config with the defaults set.
type CreateHandler ¶
type CreateHandler[Entity database.Mutator] interface { Handle( w http.ResponseWriter, r *http.Request, i *services.CreateInputer[Entity], ) (any, error) }
CreateHandler is the handler interface for the create endpoint.
type DefaultCRUDConfig ¶
type DefaultCRUDConfig[Entity database.CRUDEntity] struct { SystemID string URL string ConnFn db.ConnFn EntityFn func(...db.EntityOption[Entity]) Entity APIToDBFields inpututil.APIToDBFields AllAPIFields input.APIFields CreateAPIFields input.APIFields CreateInputFactoryFn func() services.CreateInputer[Entity] CreateOutputFactoryFn func() services.CreateOutputer[Entity] GetAPIFields input.APIFields GetOutputFactoryFn func() services.GetOutputer[Entity] UpdateAPIFields input.APIFields DeleteAPIFields input.APIFields }
DefaultCRUDConfig holds the default settings for the CRUD endpoints.
type DefaultCreateHandlerLogicConfig ¶
type DefaultCreateHandlerLogicConfig[Entity database.Mutator] struct { OutputFactoryFn func() services.CreateOutputer[Entity] BeforeCallback services.BeforeCreateCallback[Entity] AfterCallback services.AfterCreate[Entity] TxManager db.TxManager[Entity] MutatorRepo db.MutatorRepository[Entity] }
DefaultCreateHandlerLogicConfig holds the default configuration for the create handler logic.
func (*DefaultCreateHandlerLogicConfig[Entity]) Validate ¶
func (cfg *DefaultCreateHandlerLogicConfig[Entity]) Validate() (*DefaultCreateHandlerLogicConfig[Entity], error)
Validate validates and sets defaults for the create handler logic config. It returns a new config with the defaults set.
type DefaultCreateInputHandlerConfig ¶
type DefaultCreateInputHandlerConfig[Entity database.Mutator] struct { APIFields input.APIFields InputFactoryFn func() services.CreateInputer[Entity] }
DefaultCreateInputHandlerConfig holds the default configuration for the create input handler.
func (*DefaultCreateInputHandlerConfig[Entity]) Validate ¶
func (cfg *DefaultCreateInputHandlerConfig[Entity]) Validate() (*DefaultCreateInputHandlerConfig[Entity], error)
Validate validates and sets defaults for the create input handler config. It returns a new config with the defaults set.
type DefaultDeleteHandlerLogicConfig ¶
type DefaultDeleteHandlerLogicConfig[Entity database.Mutator] struct { OutputFactoryFn func() services.DeleteOutputer BeforeCallback services.BeforeDeleteCallback[Entity] AfterCallback services.AfterDelete EntityFn func(...db.EntityOption[Entity]) Entity }
DefaultDeleteHandlerLogicConfig holds the default configuration for the delete handler logic.
func (*DefaultDeleteHandlerLogicConfig[Entity]) Validate ¶
func (cfg *DefaultDeleteHandlerLogicConfig[Entity]) Validate() (*DefaultDeleteHandlerLogicConfig[Entity], error)
Validate validates and sets defaults for the delete handler logic config. It returns a new config with the defaults set.
type DefaultDeleteInput ¶
type DefaultDeleteInput struct {
Selectors apidb.APISelectors `json:"selectors"`
}
func NewDeleteInput ¶
func NewDeleteInput() *DefaultDeleteInput
func (*DefaultDeleteInput) GetSelectors ¶
func (d *DefaultDeleteInput) GetSelectors() apidb.APISelectors
type DefaultDeleteInputHandlerConfig ¶
type DefaultDeleteInputHandlerConfig struct {
APIFields input.APIFields
InputFactoryFn func() services.DeleteInputer
}
DefaultDeleteInputHandlerConfig holds the default configuration for the delete input handler.
func (*DefaultDeleteInputHandlerConfig) Validate ¶
func (cfg *DefaultDeleteInputHandlerConfig) Validate() (*DefaultDeleteInputHandlerConfig, error)
Validate validates and sets defaults for the delete input handler config. It returns a new config with the defaults set.
type DefaultDeleteOutput ¶
type DefaultDeleteOutput struct {
Count int64 `json:"count"`
}
func NewDefaultDeleteOutput ¶
func NewDefaultDeleteOutput() *DefaultDeleteOutput
func (*DefaultDeleteOutput) SetCount ¶
func (d *DefaultDeleteOutput) SetCount(count int64)
type DefaultGetHandlerLogicConfig ¶
type DefaultGetHandlerLogicConfig[Entity database.Getter] struct { OutputFactoryFn func() services.GetOutputer[Entity] BeforeCallback services.BeforeGetCallback AfterGetFn services.AfterGet[Entity] EntityFn func(...db.EntityOption[Entity]) Entity TxManager db.TxManager[Entity] ReaderRepo db.ReaderRepository[Entity] }
DefaultGetHandlerLogicConfig holds the default configuration for the get handler logic.
func (*DefaultGetHandlerLogicConfig[Entity]) Validate ¶
func (cfg *DefaultGetHandlerLogicConfig[Entity]) Validate() (*DefaultGetHandlerLogicConfig[Entity], error)
Validate validates and sets defaults for the get handler logic config. It returns a new config with the defaults set.
type DefaultGetInput ¶
type DefaultGetInput struct {
Selectors apidb.APISelectors `json:"selectors"`
Orders apidb.Orders `json:"orders"`
Page *apidb.Page `json:"page"`
Count bool `json:"count"`
}
DefaultGetInput is the default input for the get endpoint.
func (*DefaultGetInput) GetCount ¶
func (i *DefaultGetInput) GetCount() bool
GetCount returns the count for the get db.
func (*DefaultGetInput) GetOrders ¶
func (i *DefaultGetInput) GetOrders() apidb.Orders
GetOrders returns the orders for the get db.
func (*DefaultGetInput) GetPage ¶
func (i *DefaultGetInput) GetPage() *apidb.Page
GetPage returns the page for the get db.
func (*DefaultGetInput) GetSelectors ¶
func (i *DefaultGetInput) GetSelectors() apidb.APISelectors
GetSelectors returns the selectors for the get db.
type DefaultGetInputHandlerConfig ¶
type DefaultGetInputHandlerConfig struct {
APIFields input.APIFields
InputFactoryFn func() services.GetInputer
}
DefaultGetInputHandlerConfig holds the default configuration for the get input handler.
func (*DefaultGetInputHandlerConfig) Validate ¶
func (cfg *DefaultGetInputHandlerConfig) Validate() (*DefaultGetInputHandlerConfig, error)
Validate validates and sets defaults for the get input handler config. It returns a new config with the defaults set.
type DefaultGetOutput ¶
type DefaultGetOutput[Entity database.Getter] struct { Entities []Entity `json:"entities"` Count int `json:"count"` }
func NewDefaultGetOutput ¶
func NewDefaultGetOutput[Entity database.Getter]() *DefaultGetOutput[Entity]
func (*DefaultGetOutput[Entity]) SetCount ¶
func (o *DefaultGetOutput[Entity]) SetCount(count int)
func (*DefaultGetOutput[Entity]) SetEntities ¶
func (o *DefaultGetOutput[Entity]) SetEntities(entities []Entity)
type DefaultUpdateHandlerLogicConfig ¶
type DefaultUpdateHandlerLogicConfig[Entity database.Mutator] struct { OutputFactoryFn func() services.UpdateOutputer BeforeCallback services.BeforeUpdateCallback[Entity] AfterUpdateFn services.AfterUpdate[Entity] EntityFn func(...db.EntityOption[Entity]) Entity }
DefaultUpdateHandlerLogicConfig holds the default configuration for the update handler logic.
func (*DefaultUpdateHandlerLogicConfig[Entity]) Validate ¶
func (cfg *DefaultUpdateHandlerLogicConfig[Entity]) Validate() (*DefaultUpdateHandlerLogicConfig[Entity], error)
Validate validates and sets defaults for the update handler logic config. It returns a new config with the defaults set.
type DefaultUpdateInput ¶
type DefaultUpdateInput struct {
Selectors apidb.APISelectors `json:"selectors"`
Updates apidb.APIUpdates `json:"updates"`
Upsert bool `json:"upsert"`
}
func NewDefaultUpdateInput ¶
func NewDefaultUpdateInput() *DefaultUpdateInput
func (*DefaultUpdateInput) GetSelectors ¶
func (u *DefaultUpdateInput) GetSelectors() apidb.APISelectors
func (*DefaultUpdateInput) GetUpdates ¶
func (u *DefaultUpdateInput) GetUpdates() apidb.APIUpdates
func (*DefaultUpdateInput) GetUpsert ¶
func (u *DefaultUpdateInput) GetUpsert() bool
type DefaultUpdateInputHandlerConfig ¶
type DefaultUpdateInputHandlerConfig struct {
APIFields input.APIFields
InputFactoryFn func() services.UpdateInputer
}
DefaultUpdateInputHandlerConfig holds the default configuration for the update input handler.
func (*DefaultUpdateInputHandlerConfig) Validate ¶
func (cfg *DefaultUpdateInputHandlerConfig) Validate() (*DefaultUpdateInputHandlerConfig, error)
Validate validates and sets defaults for the update input handler config. It returns a new config with the defaults set.
type DefaultUpdateOutput ¶
type DefaultUpdateOutput struct {
Count int64 `json:"count"`
}
func NewDefaultUpdateOutput ¶
func NewDefaultUpdateOutput() *DefaultUpdateOutput
func (*DefaultUpdateOutput) SetCount ¶
func (u *DefaultUpdateOutput) SetCount(count int64)
type DeleteConfig ¶
type DeleteConfig[Entity database.Mutator] struct { // Default config for the delete input handler. DefaultInputHandlerConfig *DefaultDeleteInputHandlerConfig // Override for the delete input handler. InputHandlerFactoryFn func() endpoint.InputHandler[services.DeleteInputer] // Default config for the delete handler logic. DefaultHandlerLogicConfig *DefaultDeleteHandlerLogicConfig[Entity] // Override for the delete handler logic. HandlerLogicFnFactoryFn func() endpoint.HandlerLogicFn[services.DeleteInputer] ErrorHandlerFactoryFn func() endpoint.ErrorHandler OutputHandlerFactoryFn func() endpoint.OutputHandler }
DeleteConfig holds the configuration for the delete endpoint.
func (*DeleteConfig[Entity]) Validate ¶
func (cfg *DeleteConfig[Entity]) Validate( systemID string, emitterLogger event.EmitterLogger, conversionRules map[string]func(any) any, customRules map[string]func(any) error, connFn db.ConnFn, apiToDBFields inpututil.APIToDBFields, ) (*DeleteConfig[Entity], error)
Validate validates and sets defaults for the delete config. It returns a new config with the defaults set.
type DeleteHandler ¶
type DeleteHandler interface {
Handle(
w http.ResponseWriter, r *http.Request, i services.DeleteInputer,
) (any, error)
}
DeleteHandler is the handler interface for the delete endpoint.
type GetConfig ¶
type GetConfig[Entity database.Getter] struct { // Default config for the get input handler. DefaultInputHandlerConfig *DefaultGetInputHandlerConfig // Override for the get input handler. InputHandlerFactoryFn func() endpoint.InputHandler[services.GetInputer] // Default config for the get handler logic. DefaultHandlerLogicConfig *DefaultGetHandlerLogicConfig[Entity] // Override for the get handler logic. HandlerLogicFnFactoryFn func() endpoint.HandlerLogicFn[services.GetInputer] ErrorHandlerFactoryFn func() endpoint.ErrorHandler OutputHandlerFactoryFn func() endpoint.OutputHandler }
GetConfig holds the configuration for the get endpoint.
func (*GetConfig[Entity]) Validate ¶
func (cfg *GetConfig[Entity]) Validate( systemID string, emitterLogger event.EmitterLogger, conversionRules map[string]func(any) any, customRules map[string]func(any) error, connFn db.ConnFn, apiToDBFields inpututil.APIToDBFields, ) (*GetConfig[Entity], error)
Validate validates and sets defaults for the get config. It returns a new config with the defaults set.
type GetHandler ¶
type GetHandler interface {
Handle(
w http.ResponseWriter, r *http.Request, i *services.GetInputer,
) (any, error)
}
GetHandler is the handler interface for the get endpoint.
type UpdateConfig ¶
type UpdateConfig[Entity database.Mutator] struct { // Default config for the update input handler. DefaultInputHandlerConfig *DefaultUpdateInputHandlerConfig // Override for the update input handler. InputHandlerFactoryFn func() endpoint.InputHandler[services.UpdateInputer] // Default config for the update handler logic. DefaultHandlerLogicConfig *DefaultUpdateHandlerLogicConfig[Entity] // Override for the update handler logic. HandlerLogicFnFactoryFn func() endpoint.HandlerLogicFn[services.UpdateInputer] ErrorHandlerFactoryFn func() endpoint.ErrorHandler OutputHandlerFactoryFn func() endpoint.OutputHandler }
UpdateConfig holds the configuration for the update endpoint.
func (*UpdateConfig[Entity]) Validate ¶
func (cfg *UpdateConfig[Entity]) Validate( systemID string, emitterLogger event.EmitterLogger, conversionRules map[string]func(any) any, customRules map[string]func(any) error, connFn db.ConnFn, apiToDBFields inpututil.APIToDBFields, ) (*UpdateConfig[Entity], error)
Validate validates and sets defaults for the update config. It returns a new config with the defaults set.
type UpdateHandler ¶
type UpdateHandler interface {
Handle(
w http.ResponseWriter, r *http.Request, i *services.UpdateInputer,
) (any, error)
}
UpdateHandler is the handler interface for the update endpoint.