db

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2025 License: Apache-2.0 Imports: 12 Imported by: 3

Documentation

Index

Constants

View Source
const (
	SortAscending  = "asc"
	SortDescending = "desc"

	SearchNone  = 0
	SearchStart = 1
	SearchEnd   = 2
	SearchAny   = 3

	DefaultPageSize = 100
)
View Source
const (
	ErrDuplicatedAlias  = utils.Error("alias already exists")
	ErrDuplicatedField  = utils.Error("field already exists")
	ErrInvalidStructPtr = utils.Error("field spec requires a pointer to a struct")
	ErrNilPointer       = utils.Error("ptr to struct to be parsed by field spec is nil")
	ErrInvalidStruct    = utils.Error("field spec requires a pointer to a struct; invalid type")
)
View Source
const (
	ErrInvalidParameters = utils.Error("invalid parameter count or parameter is nil")
)

Variables

This section is empty.

Functions

func Count added in v0.2.9

func Count(ctx context.Context, conn sqlx.QueryerContext, qry *goqu.SelectDataset) (int64, error)

func Del added in v0.2.9

func DeleteByKey added in v0.2.9

func DeleteByKey(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.DeleteDataset, keyField string, value any) error

func DeleteWhere added in v0.2.9

func DeleteWhere(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.DeleteDataset, fieldNameValue map[string]any) error

func EmptyResult added in v0.2.0

func EmptyResult(err error) bool

EmptyResult returns true if error is empty result

func Exec added in v0.2.9

func Exists added in v0.2.9

func Exists(ctx context.Context, conn sqlx.QueryerContext, qry *goqu.SelectDataset, fieldName string, fieldValue any, skip ...any) (bool, error)

func Fetch added in v0.2.9

func Fetch(ctx context.Context, conn SqlxReaderCtx, qry *goqu.SelectDataset, target any) error

func FetchByKey added in v0.2.9

func FetchByKey(ctx context.Context, conn sqlx.QueryerContext, qry *goqu.SelectDataset, keyField string, value any, target any) error

func FetchOne added in v0.2.9

func FetchOne(ctx context.Context, conn sqlx.QueryerContext, qry *goqu.SelectDataset, target any) error

func FetchRecord added in v0.2.9

func FetchRecord(ctx context.Context, conn sqlx.QueryerContext, qry *goqu.SelectDataset, fieldValues map[string]any, target any) error

func FetchWhere added in v0.2.9

func FetchWhere(ctx context.Context, conn SqlxReaderCtx, qry *goqu.SelectDataset, fieldValues map[string]any, target any) error

func Insert added in v0.2.9

func Insert(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.InsertDataset, rows ...any) error

func InsertReturning added in v0.2.9

func InsertReturning(ctx context.Context, conn sqlx.QueryerContext, qry *goqu.InsertDataset, record any, returnFields []interface{}, target ...any) error

func RawExec added in v0.2.9

func RawExec(ctx context.Context, conn sqlx.ExecerContext, sql string, args ...any) error

func RegisterFactory added in v0.4.0

func RegisterFactory(driverName string, factory FnRepositoryFactory)

RegisterFactory registers a repository factory for the given driver name

func Update added in v0.2.9

func Update(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.UpdateDataset) error

func UpdateByKey added in v0.2.9

func UpdateByKey(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.UpdateDataset, record any, keyField string, value any) error

func UpdateRecord added in v0.2.9

func UpdateRecord(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.UpdateDataset, record any, whereFieldsValues map[string]any) error

Types

type Builder added in v0.2.0

type Builder interface {
	Sql() goqu.DialectWrapper
	SqlSelect() *goqu.SelectDataset
	SqlInsert() *goqu.InsertDataset
	SqlUpdate() *goqu.UpdateDataset
	SqlDelete() *goqu.DeleteDataset
}

type Client

type Client interface {
	GetClient() *sqlx.DB
	IsConnected() bool
	Connect() error
	Disconnect()
}

type ConnectionOptions added in v0.2.0

type ConnectionOptions interface {
	Apply(db *sqlx.DB) error
}

type Counter added in v0.2.8

type Counter interface {
	Count() (int64, error)
	CountWhere(fieldValues map[string]any) (int64, error)
}

type Deleter added in v0.2.0

type Deleter interface {
	Delete(qry *goqu.DeleteDataset) error
	DeleteWhere(fieldNameValue map[string]any) error
	DeleteByKey(keyField string, value any) error
}

type Executor added in v0.1.4

type Executor interface {
	Exec(qry *goqu.SelectDataset) error
	RawExec(sql string, args ...any) error
	Select(sql string, target any, args ...any) error
}

type FV added in v0.2.2

type FV map[string]any // alias for fieldValues maps

type FieldSpec added in v0.4.0

type FieldSpec struct {
	// contains filtered or unexported fields
}

func NewEmptyFieldSpec added in v0.4.0

func NewEmptyFieldSpec() *FieldSpec

func NewFieldSpec added in v0.4.0

func NewFieldSpec(from any) (*FieldSpec, error)

func (*FieldSpec) AddField added in v0.4.0

func (f *FieldSpec) AddField(dbField, alias string, searchable bool, sortable bool, filterable bool) error

AddField add a field to the field map; alias is the public name of the field

func (*FieldSpec) FieldAliasMap added in v0.4.0

func (f *FieldSpec) FieldAliasMap() map[string]string

FieldAliasMap returns a copy of the fieldAlias map that maps db fields to alias

func (*FieldSpec) FilterFields added in v0.4.0

func (f *FieldSpec) FilterFields() []string

FilterFields return the list of filterable field alias

func (*FieldSpec) LookupAlias added in v0.4.0

func (f *FieldSpec) LookupAlias(alias string) (string, bool)

LookupAlias lookup an alias and return the DbField

func (*FieldSpec) SearchFields added in v0.4.0

func (f *FieldSpec) SearchFields() []string

SearchFields return the list of filterable field alias

func (*FieldSpec) SortFields added in v0.4.0

func (f *FieldSpec) SortFields() []string

SortFields return the list of filterable field alias

type FnRepositoryFactory added in v0.4.0

type FnRepositoryFactory func(ctx context.Context, conn *SqlClient, tableName string) Repository

type Grid added in v0.4.0

type Grid struct {
	// contains filtered or unexported fields
}

func NewGrid added in v0.4.0

func NewGrid(tableName string, record any) (*Grid, error)

NewGrid create a new grid

func NewGridWithSpec added in v0.4.0

func NewGridWithSpec(tableName string, spec *FieldSpec) *Grid

func (*Grid) AddFilterFunc added in v0.4.0

func (grid *Grid) AddFilterFunc(dbField string, f GridFilterFunc) *Grid

AddFilterFunc register a new filtering function filtering functions translate filtering values to db-compatible values

func (*Grid) Build added in v0.4.0

func (grid *Grid) Build(qry *goqu.SelectDataset, args GridQuery) (*goqu.SelectDataset, error)

func (*Grid) ValidQuery added in v0.4.0

func (grid *Grid) ValidQuery(query GridQuery) error

ValidQuery validates if a GridQuery request is valid

type GridError added in v0.4.0

type GridError struct {
	Scope   string `json:"scope"`
	Field   string `json:"field"`
	Message string `json:"message"`
}

func (GridError) Error added in v0.4.0

func (err GridError) Error() string

error interface

type GridFilterFunc added in v0.4.0

type GridFilterFunc func(lookupValue any) (any, error)

type GridOps added in v0.4.0

type GridOps interface {
	Grid(record any) (*Grid, error)
	QueryGrid(record any, args GridQuery, dest any) error
}

type GridQuery added in v0.4.0

type GridQuery struct {
	SearchType   uint              `db:"searchType"`
	SearchText   string            `json:"searchText,omitempty"`
	FilterFields map[string]any    `json:"filterFields,omitEmpty"`
	SortFields   map[string]string `json:"sortFields,omitempty"`
	Offset       uint              `json:"offset,omitempty"`
	Limit        uint              `json:"limit,omitempty"`
}

func NewGridQuery added in v0.4.0

func NewGridQuery(searchType uint, limit uint, offset uint) (GridQuery, error)

NewGridQuery helper to create a GridQuery

func (GridQuery) Page added in v0.4.0

func (g GridQuery) Page(page, itemsPerPage int)

Page calculates offset and limit from page information

type Identifier added in v0.2.0

type Identifier interface {
	Db() *sqlx.DB
	Name() string
}

type Reader added in v0.2.0

type Reader interface {
	FetchOne(qry *goqu.SelectDataset, target any) error
	FetchRecord(fieldValues map[string]any, target any) error
	Fetch(qry *goqu.SelectDataset, target any) error
	FetchWhere(fieldValues map[string]any, target any) error
	FetchByKey(keyField string, value any, target any) error
	Exists(fieldName string, fieldValue any, skip ...any) (bool, error)
}

type Repository added in v0.2.0

type Repository interface {
	Identifier
	Builder
	Reader
	Executor
	Writer
	Deleter
	Updater
	Counter
	GridOps
	NewTransaction(opts *sql.TxOptions) (Transaction, error)
}

func NewRepository added in v0.2.0

func NewRepository(ctx context.Context, conn *SqlClient, tableName string) Repository

type SqlClient added in v0.1.1

type SqlClient struct {
	Conn       *sqlx.DB
	Dsn        string
	DriverName string
	// contains filtered or unexported fields
}

func NewSqlClient added in v0.1.1

func NewSqlClient(dsn string, driverName string, connOptions ConnectionOptions) *SqlClient

func (*SqlClient) Connect added in v0.1.1

func (c *SqlClient) Connect() error

func (*SqlClient) Db added in v0.2.0

func (c *SqlClient) Db() *sqlx.DB

func (*SqlClient) Disconnect added in v0.1.1

func (c *SqlClient) Disconnect()

func (*SqlClient) IsConnected added in v0.1.1

func (c *SqlClient) IsConnected() bool

type SqlxReaderCtx added in v0.2.1

type SqlxReaderCtx interface {
	SelectContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error
}

type Transaction added in v0.2.0

type Transaction interface {
	Builder
	Reader
	Executor
	Writer
	Deleter
	Updater
	Counter

	Db() *sqlx.Tx
	Name() string

	Commit() error
	Rollback() error
}

type Updater added in v0.2.0

type Updater interface {
	Update(qry *goqu.UpdateDataset) error
	UpdateRecord(record any, whereFieldsValues map[string]any) error
	UpdateByKey(record any, keyField string, keyValue any) error
}

type Writer added in v0.2.0

type Writer interface {
	Insert(records ...any) error
	InsertReturning(record any, returnFields []interface{}, target ...any) error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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