database

package
v0.0.0-...-2dfed5b Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseEntity

type BaseEntity[I any] struct {
	ID        I          `json:"id" bson:"_id,omitempty"`
	CreatedAt *time.Time `json:"created_at" bson:"created_at"`
	UpdatedAt *time.Time `json:"updated_at" bson:"updated_at"`
	DeletedAt *time.Time `json:"deleted_at" bson:"deleted_at"`
}

func (*BaseEntity[I]) BeforeCreate

func (b *BaseEntity[I]) BeforeCreate(tx *gorm.DB) (err error)

type BaseRepository

type BaseRepository[D any, I any, E Entity] interface {
	MasterDB() *D
	SlaveDB() *D

	FindAll(ctx context.Context, filter map[string]any) ([]E, error)
	FindById(ctx context.Context, ID I) (*E, error)
	FindByIdAndLock(ctx context.Context, ID I, trx *D) (*E, error)
	FindByIds(ctx context.Context, IDs []I) ([]E, error)
	FindByOffset(ctx context.Context, filter map[string]any, sort []string, size int, page int) (res Pagination[E], err error)
	FindByCursor(ctx context.Context, filter map[string]any, sort []string, size int, next *I) (res Pagination[E], err error)

	Insert(ctx context.Context, model E, trx *D) (E, error)
	InsertMany(ctx context.Context, models []E, trx *D) ([]E, error)

	Update(ctx context.Context, model E, trx *D) error
	UpdateById(ctx context.Context, ID I, payload map[string]any, trx *D) (E, error)
	UpdateByIds(ctx context.Context, IDs []I, payload map[string]any, trx *D) error
	UpdateMany(ctx context.Context, filter map[string]any, payload map[string]any, trx *D) error

	DeleteById(ctx context.Context, ID I, trx *D) error
	DeleteByIds(ctx context.Context, IDs []I, trx *D) error
	DeleteMany(ctx context.Context, filter map[string]any, trx *D) error

	Begin(ctx context.Context) (*D, error)
	Rollback(trx *D) *D
	Commit(trx *D) *D
}

type Entity

type Entity interface {
	TableName() string
	RepositoryName() string
}

type Pagination

type Pagination[E Entity] struct {
	Data       []E                   `json:"data"`
	Metadata   *PaginationMetadata   `json:"metadata,omitempty"`
	Navigation *PaginationNavigation `json:"navigation,omitempty"`
}

type PaginationMetadata

type PaginationMetadata struct {
	Total *int64 `json:"total,omitempty"`
	Pages *int   `json:"pages,omitempty"`
	Page  *int   `json:"page,omitempty"`
	Size  *int   `json:"size,omitempty"`
}

type PaginationNavigation

type PaginationNavigation struct {
	First *string `json:"first,omitempty"`
	Next  *string `json:"next,omitempty"`
	Prev  *string `json:"prev,omitempty"`
	Last  *string `json:"last,omitempty"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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