crud

package
v0.0.0-...-b9892d1 Latest Latest
Warning

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

Go to latest
Published: Aug 29, 2026 License: LGPL-2.1 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Create

func Create[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
](
	ctx corectx.Context,
	param CreateParam[TDomain, TDomainPtr],
) (_ *dyn.OpResult[TDomain], err error)

func CreateBulk

func CreateBulk[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
	TDomainGetter dmodel.DynamicModelGetter,
](
	ctx corectx.Context,
	param CreateBulkParam[TDomain, TDomainPtr, TDomainGetter],
) (*dyn.OpResult[[]TDomain], error)

func DeleteOne

func DeleteOne(ctx corectx.Context, param DeleteOneParam) (result *dyn.OpResult[dyn.MutateResultData], err error)

func ExecInTranx

func ExecInTranx[TResult any](ctx corectx.Context, repo dyn.DynamicModelRepository, fn func(ctx corectx.Context) (*TResult, error)) (result *TResult, err error)

func Exists

func Exists(ctx corectx.Context, param ExistsParam) (result *dyn.OpResult[dyn.ExistsResultData], err error)

func GetOne

func GetOne[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
](
	ctx corectx.Context, param GetOneParam,
) (_ *dyn.OpResult[TDomain], err error)

func GetOneEnabled

func GetOneEnabled[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
](
	ctx corectx.Context, param GetOneParam,
) (_ *dyn.OpResult[TDomain], err error)

func ManageM2m

func ManageM2m(ctx corectx.Context, param ManageM2mParam) (
	result *dyn.OpResult[dyn.MutateResultData], err error,
)
func Search[TDomain any, TDomainPtr dyn.DynamicModelPtr[TDomain]](
	ctx corectx.Context, param SearchParam,
) (_ *dyn.OpResult[dyn.PagedResultData[TDomain]], err error)

func SearchAll

func SearchAll[TDomain any](pagedFn func(page int, size int) (*dyn.OpResult[dyn.PagedResultData[TDomain]], error)) (*dyn.OpResult[[]TDomain], error)

func SetIsArchived

func SetIsArchived(
	ctx corectx.Context,
	dbRepoGetter dyn.DynamicModelRepository,
	cmd dyn.SetIsArchivedCommand,
) (_ *dyn.OpResult[dyn.MutateResultData], err error)

func UiGetOne

func UiGetOne[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
](
	ctx corectx.Context, param UiGetOneParam[TDomain, TDomainPtr],
) (_ *dyn.OpResult[dyn.SingleResultData[TDomain]], err error)

func UiSearch

func UiSearch[TDomain any, TDomainPtr dyn.DynamicModelPtr[TDomain]](
	ctx corectx.Context, param UiSearchParam[TDomain, TDomainPtr],
) (_ *dyn.OpResult[dyn.PagedResultData[TDomain]], err error)

func Update

func Update[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
](
	ctx corectx.Context,
	param UpdateParam[TDomain, TDomainPtr],
) (_ *dyn.OpResult[dyn.MutateResultData], err error)

func UpdateBulk

func UpdateBulk[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
](
	ctx corectx.Context,
	param UpdateBulkParam[TDomain, TDomainPtr, TDomainPtr],
) (*dyn.OpResult[dyn.MutateResultData], error)

func UpdateRegardless

func UpdateRegardless(
	ctx corectx.Context,
	param UpdateRegardlessParam,
) (_ *dyn.OpResult[dyn.MutateResultData], err error)

UpdateRegardless updates a record without validation, but it still checks for existence and etag matching. Use this function with caution. Must do your own validation before calling this function.

Types

type AfterValidationSuccessFn

type AfterValidationSuccessFn[T any] func(ctx corectx.Context, model T) (T, error)

type BeforeValidationFn

type BeforeValidationFn[T any] func(ctx corectx.Context, model T, vErrs *ft.ClientErrors) (T, error)

type CreateBulkParam

type CreateBulkParam[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
	TDomainGetter dmodel.DynamicModelGetter,
] struct {
	Action         string
	BaseRepoGetter dyn.DynamicModelRepository

	Data []TDomainGetter

	// Optional function to do some processing on the domain model before validation.
	BeforeValidation BeforeValidationFn[TDomainPtr]

	// Optional function to do some processing on the domain model after validation.
	AfterValidationSuccess AfterValidationSuccessFn[TDomainPtr]

	// Optional function for advanced validation (business rules) in addition to built-in schema validation.
	ValidateExtra CreateValidateExtraFn[TDomainPtr]
}

type CreateParam

type CreateParam[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
] struct {
	// Action name for logging and error messages
	Action         string
	BaseRepoGetter dyn.DynamicModelRepository

	// Data to create
	Data dmodel.DynamicModelGetter

	// Optional function to do some processing on the domain model before validation.
	BeforeValidation BeforeValidationFn[TDomainPtr]

	// Optional function to do some processing on the domain model after validation.
	AfterValidationSuccess AfterValidationSuccessFn[TDomainPtr]

	// Optional function for advanced validation (business rules) in addition to built-in schema validation.
	ValidateExtra CreateValidateExtraFn[TDomainPtr]
}

type CreateValidateExtraFn

type CreateValidateExtraFn[T any] func(ctx corectx.Context, inputModel T, vErrs *ft.ClientErrors) error

type DeleteOneParam

type DeleteOneParam struct {
	Action                 string
	DbRepoGetter           dyn.DynamicModelRepository
	Cmd                    dyn.DeleteOneCommand
	ValidateExtra          DeleteValidateExtraFn
	AfterValidationSuccess AfterValidationSuccessFn[dyn.DeleteOneCommand]
}

type DeleteValidateExtraFn

type DeleteValidateExtraFn func(ctx corectx.Context, keyFields dmodel.DynamicFields, vErrs *ft.ClientErrors) error

type ExistsParam

type ExistsParam struct {
	Action       string
	DbRepoGetter dyn.DynamicModelRepository
	Query        dyn.ExistsQuery
}

type GetOneFn

type GetOneFn[TDomain any] func() (*dyn.OpResult[TDomain], error)

type GetOneParam

type GetOneParam struct {
	Action                 string
	DbRepoGetter           dyn.DynamicModelRepository
	Query                  dyn.GetOneQuery
	AfterValidationSuccess AfterValidationSuccessFn[dyn.GetOneQuery]
}

type ManageM2mParam

type ManageM2mParam struct {
	Action             string
	DbRepoGetter       dyn.DynamicModelRepository
	DestSchemaName     string
	SrcId              model.Id
	SrcIdFieldForError string
	AssociatedIds      datastructure.Set[model.Id]
	DisassociatedIds   datastructure.Set[model.Id]
	BeforeInsert       func(ctx corectx.Context, dbRecords []dmodel.DynamicFields) error
}

type SearchFn

type SearchFn[TDomain any] func(
	fn AfterValidationSuccessFn[dyn.SearchQuery],
) (*dyn.OpResult[dyn.PagedResultData[TDomain]], error)

type SearchParam

type SearchParam struct {
	Action                 string
	DbRepoGetter           dyn.DynamicModelRepository
	Query                  dyn.SearchQuery
	AfterValidationSuccess AfterValidationSuccessFn[dyn.SearchQuery]
}

type ServiceCreateOptions

type ServiceCreateOptions[TModel any] struct {
	AfterValidationSuccess AfterValidationSuccessFn[TModel]
}

type ServiceDeleteOptions

type ServiceDeleteOptions struct {
	AfterValidationSuccess AfterValidationSuccessFn[dyn.DeleteOneCommand]
}

type ServiceSearchOptions

type ServiceSearchOptions struct {
	AfterValidationSuccess AfterValidationSuccessFn[dyn.SearchQuery]
}

type ServiceUpdateOptions

type ServiceUpdateOptions[TModel any] ServiceCreateOptions[TModel]

type UiGetOneParam

type UiGetOneParam[TDomain any, TDomainPtr dyn.DynamicModelPtr[TDomain]] struct {
	Action   string
	Schema   *dmodel.ModelSchema
	GetOneFn GetOneFn[TDomain]
}

type UiSearchParam

type UiSearchParam[TDomain any, TDomainPtr dyn.DynamicModelPtr[TDomain]] struct {
	Action string
	// Default fields to use when the client specifies neither `fields` nor a
	// resolvable named view.
	// No need to specify ID field because it is always included.
	DefaultFields []string

	// Always masked fields that are not allowed to be returned to the client.
	MaskedFields []string

	Schema   *dmodel.ModelSchema
	SearchFn SearchFn[TDomain]
}

type UpdateBulkParam

type UpdateBulkParam[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
	TDomainGetter dmodel.DynamicModelGetter,
] struct {
	Action         string
	BaseRepoGetter dyn.DynamicModelRepository
	Data           []TDomainGetter

	BeforeValidation       BeforeValidationFn[TDomainPtr]
	AfterValidationSuccess AfterValidationSuccessFn[TDomainPtr]
	ValidateExtra          UpdateValidateExtraFn[TDomainPtr]
}

type UpdateParam

type UpdateParam[
	TDomain any,
	TDomainPtr dyn.DynamicModelPtr[TDomain],
] struct {
	Action                 string
	DbRepoGetter           dyn.DynamicModelRepository
	Data                   dmodel.DynamicModelGetter
	BeforeValidation       BeforeValidationFn[TDomainPtr]
	AfterValidationSuccess AfterValidationSuccessFn[TDomainPtr]
	ValidateExtra          UpdateValidateExtraFn[TDomainPtr]
}

type UpdateRegardlessParam

type UpdateRegardlessParam struct {
	Action       string
	DbRepoGetter dyn.DynamicModelRepository
	Data         dmodel.DynamicFields
}

type UpdateValidateExtraFn

type UpdateValidateExtraFn[T any] func(ctx corectx.Context, inputModel T, foundModel T, vErrs *ft.ClientErrors) error

Jump to

Keyboard shortcuts

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