db

package
v0.17.0 Latest Latest
Warning

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

Go to latest
Published: Mar 17, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Security limits to prevent DoS attacks.
	MaxFilters       = 10       // Maximum number of filters allowed
	MaxSortFields    = 5        // Maximum number of sort fields allowed
	MaxArrayElements = 50       // Maximum elements in IN/NIN arrays
	MaxPageNumber    = 1000000  // Maximum page number to prevent overflow
	MaxOffset        = 10000000 // Maximum offset to prevent excessive queries
	MaxInputLength   = 100      // Maximum length for string inputs
	MaxLimit         = 1000     // Maximum limit per page
	MinLimit         = 1        // Minimum limit per page

	DefaultLimit = 500 // Default limit per page
	DefaultPage  = 1   // Default page number
)

Variables

View Source
var (
	ErrInvalidOperator = errors.New("invalid operator")
	ErrInvalidField    = errors.New("invalid field")
	ErrInvalidValue    = errors.New("invalid value")
)
View Source
var TablesFS embed.FS
View Source
var TablesPath = "migrations/table"

Functions

func New

func New(ctx context.Context, cfg *config.Config) (*commonDB.DB, error)

Types

type FieldMeta

type FieldMeta struct {
	Validator FieldValidator
	Column    string
}

FieldMeta stores validator and optional DB column.

type FieldValidator

type FieldValidator func(value string) (any, error)

type OperatorHandler

type OperatorHandler func(db *gorm.DB, field string, value any) *gorm.DB

OperatorHandler applies a filter to a GORM query.

type QueryBuilder

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

QueryBuilder builds dynamic GORM queries.

func NewQueryBuilder

func NewQueryBuilder() *QueryBuilder

NewQueryBuilder creates a new QueryBuilder.

func (*QueryBuilder) ParseQueryParams

func (qb *QueryBuilder) ParseQueryParams(query url.Values) (*QueryOptions, error)

ParseQueryParams parses URL params into QueryOptions.

func (*QueryBuilder) RegisterBoolField

func (qb *QueryBuilder) RegisterBoolField(field string, column ...string)

func (*QueryBuilder) RegisterField

func (qb *QueryBuilder) RegisterField(field string, validator FieldValidator, column ...string)

RegisterField registers a field with validator and optional DB column.

func (*QueryBuilder) RegisterIntField

func (qb *QueryBuilder) RegisterIntField(field string, column ...string)

func (*QueryBuilder) RegisterStringField

func (qb *QueryBuilder) RegisterStringField(field string, column ...string)

func (*QueryBuilder) RegisterTimeField

func (qb *QueryBuilder) RegisterTimeField(field string, column ...string)

func (*QueryBuilder) Scope

func (qb *QueryBuilder) Scope(opts *QueryOptions) func(*gorm.DB) *gorm.DB

Scope returns a GORM scope applying filters, sorting, pagination.

type QueryFilter

type QueryFilter struct {
	Field    string
	Operator string
	Value    any
}

QueryFilter represents a single filter condition.

type QueryOptions

type QueryOptions struct {
	Filters []QueryFilter
	Sort    []string
	Page    int
	Limit   int
}

QueryOptions contains query parameters.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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