Documentation
¶
Index ¶
- Constants
- Variables
- func New(ctx context.Context, cfg *config.Config) (*commonDB.DB, error)
- type FieldMeta
- type FieldValidator
- type OperatorHandler
- type QueryBuilder
- func (qb *QueryBuilder) ParseQueryParams(query url.Values) (*QueryOptions, error)
- func (qb *QueryBuilder) RegisterBoolField(field string, column ...string)
- func (qb *QueryBuilder) RegisterField(field string, validator FieldValidator, column ...string)
- func (qb *QueryBuilder) RegisterIntField(field string, column ...string)
- func (qb *QueryBuilder) RegisterStringField(field string, column ...string)
- func (qb *QueryBuilder) RegisterTimeField(field string, column ...string)
- func (qb *QueryBuilder) Scope(opts *QueryOptions) func(*gorm.DB) *gorm.DB
- type QueryFilter
- type QueryOptions
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 ¶
Types ¶
type FieldMeta ¶
type FieldMeta struct {
Validator FieldValidator
Column string
}
FieldMeta stores validator and optional DB column.
type FieldValidator ¶
type OperatorHandler ¶
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 ¶
QueryFilter represents a single filter condition.
type QueryOptions ¶
type QueryOptions struct {
Filters []QueryFilter
Sort []string
Page int
Limit int
}
QueryOptions contains query parameters.
Click to show internal directories.
Click to hide internal directories.