db

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Sep 12, 2025 License: Apache-2.0 Imports: 14 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 (
	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 Delete added in v0.5.0

func Delete(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.DeleteDataset) error

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 Do added in v0.5.0

func Do(ctx context.Context, conn SqlAdapter, qry any, target ...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 GetDialect added in v0.5.0

func GetDialect(driverName string) qb.SqlDialect

func RawExec added in v0.2.9

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

func RawFetch added in v0.5.0

func RawFetch(ctx context.Context, conn sqlx.QueryerContext, sql string, args []any, target any) error

func RawInsert added in v0.5.0

func RawInsert(ctx context.Context, conn sqlx.ExecerContext, qry string, values []any) error

func RawInsertReturning added in v0.5.0

func RawInsertReturning(ctx context.Context, conn sqlx.QueryerContext, qry string, values []any, target ...any) error

func RawInsertReturningFlexible added in v0.5.0

func RawInsertReturningFlexible(ctx context.Context, conn sqlx.QueryerContext, sql string, args []any, target any) error

RawInsertReturningFlexible provides intelligent target scanning for InsertReturning operations. It automatically detects the target type and uses the appropriate scanning method: - *struct: uses StructScan() for automatic field mapping by name/tag - []any: uses Scan() for positional mapping to multiple variables - *variable: uses Scan() for single value mapping

func RawUpdateReturning added in v0.5.0

func RawUpdateReturning(ctx context.Context, conn sqlx.QueryerContext, qry string, args []any, target ...any) error

RawUpdateReturning helper function for RawUpdateReturningFlexible

func RawUpdateReturningFlexible added in v0.5.0

func RawUpdateReturningFlexible(ctx context.Context, conn sqlx.QueryerContext, sql string, args []any, target any) error

RawUpdateReturningFlexible provides intelligent target scanning for UpdateReturning operations. It automatically detects the target type and uses the appropriate scanning method: - *struct: uses StructScan() for automatic field mapping by name/tag - []any: uses Scan() for positional mapping to multiple variables - *variable: uses Scan() for single value mapping

func RegisterDialect added in v0.5.0

func RegisterDialect(driverName string, dialect qb.SqlDialect)

func RegisterFactory added in v0.4.0

func RegisterFactory(driverName string, factory FnRepositoryFactory)

RegisterFactory registers a repository factory for the given driver name

func ToAnySlice added in v0.5.0

func ToAnySlice[T any](in []T) []any

func Update added in v0.2.9

func Update(ctx context.Context, conn sqlx.ExecerContext, qry *goqu.UpdateDataset) 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 Dialect added in v0.5.0

type Dialect interface {
}

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 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 (*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
	SqlBuilder
	NewTransaction(opts *sql.TxOptions) (Transaction, error)
}

func NewRepository added in v0.2.0

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

type SqlAdapter added in v0.5.0

type SqlAdapter interface {
	sqlx.QueryerContext
	sqlx.ExecerContext
	SqlxReaderCtx
}

type SqlBuilder added in v0.5.0

type SqlBuilder interface {
	SqlDialect() qb.SqlDialect
	SqlBuilder() *qb.SqlBuilder
	SqlUpdateX(record any) *qb.UpdateBuilder
	Do(qry any, target ...any) error
}

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
	SqlBuilder
	Db() *sqlx.Tx
	Name() string

	Commit() error
	Rollback() error
}

type Updater added in v0.2.0

type Updater interface {
	Update(qry *goqu.UpdateDataset) error
	UpdateReturning(record any, whereFieldsValues map[string]any, returnFields []string, target ...any) error
	UpdateRecord(record any, whereFieldsValues map[string]any) error
	UpdateFields(record any, fieldsValues map[string]any, whereFieldsValues map[string]any) error
	UpdateFieldsReturning(record any, fieldsValues map[string]any, whereFieldsValues map[string]any, returnFields []string, target ...any) error
	UpdateByKey(record any, keyField string, value any) error
}

type Writer added in v0.2.0

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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