common

package
v0.0.18 Latest Latest
Warning

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

Go to latest
Published: Nov 10, 2025 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIError

type APIError struct {
	Code    string      `json:"code"`
	Message string      `json:"message"`
	Details interface{} `json:"details,omitempty"`
	Detail  string      `json:"detail,omitempty"`
}

type Column

type Column struct {
	Name       string `json:"name"`
	Type       string `json:"type"`
	IsNullable bool   `json:"is_nullable"`
	IsPrimary  bool   `json:"is_primary"`
	IsUnique   bool   `json:"is_unique"`
	HasIndex   bool   `json:"has_index"`
}

type ColumnValidator

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

ColumnValidator validates column names against a model's fields

func NewColumnValidator

func NewColumnValidator(model interface{}) *ColumnValidator

NewColumnValidator creates a new column validator for a given model

func (*ColumnValidator) FilterRequestOptions

func (v *ColumnValidator) FilterRequestOptions(options RequestOptions) RequestOptions

FilterRequestOptions filters all column references in RequestOptions Returns a new RequestOptions with only valid columns, logging warnings for invalid ones

func (*ColumnValidator) FilterValidColumns

func (v *ColumnValidator) FilterValidColumns(columns []string) []string

FilterValidColumns filters a list of columns, returning only valid ones Logs warnings for any invalid columns

func (*ColumnValidator) GetValidColumns

func (v *ColumnValidator) GetValidColumns() []string

GetValidColumns returns a list of all valid column names for debugging purposes

func (*ColumnValidator) IsValidColumn

func (v *ColumnValidator) IsValidColumn(column string) bool

IsValidColumn checks if a column is valid Returns true if valid, false if invalid

func (*ColumnValidator) ValidateColumn

func (v *ColumnValidator) ValidateColumn(column string) error

ValidateColumn validates a single column name Returns nil if valid, error if invalid Columns prefixed with "cql" (case insensitive) are always valid

func (*ColumnValidator) ValidateColumns

func (v *ColumnValidator) ValidateColumns(columns []string) error

ValidateColumns validates multiple column names Returns error with details about all invalid columns

func (*ColumnValidator) ValidateRequestOptions

func (v *ColumnValidator) ValidateRequestOptions(options RequestOptions) error

ValidateRequestOptions validates all column references in RequestOptions

type ComputedColumn

type ComputedColumn struct {
	Name       string `json:"name"`
	Expression string `json:"expression"`
}

type CustomOperator

type CustomOperator struct {
	Name string `json:"name"`
	SQL  string `json:"sql"`
}

type Database

type Database interface {
	// Core query operations
	NewSelect() SelectQuery
	NewInsert() InsertQuery
	NewUpdate() UpdateQuery
	NewDelete() DeleteQuery

	// Raw SQL execution
	Exec(ctx context.Context, query string, args ...interface{}) (Result, error)
	Query(ctx context.Context, dest interface{}, query string, args ...interface{}) error

	// Transaction support
	BeginTx(ctx context.Context) (Database, error)
	CommitTx(ctx context.Context) error
	RollbackTx(ctx context.Context) error
	RunInTransaction(ctx context.Context, fn func(Database) error) error
}

Database interface designed to work with both GORM and Bun

type DeleteQuery

type DeleteQuery interface {
	Model(model interface{}) DeleteQuery
	Table(table string) DeleteQuery
	Where(query string, args ...interface{}) DeleteQuery

	// Execution
	Exec(ctx context.Context) (Result, error)
}

DeleteQuery interface for building DELETE queries

type FilterOption

type FilterOption struct {
	Column        string      `json:"column"`
	Operator      string      `json:"operator"`
	Value         interface{} `json:"value"`
	LogicOperator string      `json:"logic_operator"` // "AND" or "OR" - how this filter combines with previous filters
}

type HTTPHandlerFunc

type HTTPHandlerFunc func(ResponseWriter, Request)

HTTPHandlerFunc type for HTTP handlers

type InsertQuery

type InsertQuery interface {
	Model(model interface{}) InsertQuery
	Table(table string) InsertQuery
	Value(column string, value interface{}) InsertQuery
	OnConflict(action string) InsertQuery
	Returning(columns ...string) InsertQuery

	// Execution
	Exec(ctx context.Context) (Result, error)
}

InsertQuery interface for building INSERT queries

type Metadata

type Metadata struct {
	Total    int64 `json:"total"`
	Filtered int64 `json:"filtered"`
	Limit    int   `json:"limit"`
	Offset   int   `json:"offset"`
}

type ModelRegistry

type ModelRegistry interface {
	RegisterModel(name string, model interface{}) error
	GetModel(name string) (interface{}, error)
	GetAllModels() map[string]interface{}
	GetModelByEntity(schema, entity string) (interface{}, error)
}

ModelRegistry manages model registration and retrieval

type Parameter

type Parameter struct {
	Name     string `json:"name"`
	Value    string `json:"value"`
	Sequence *int   `json:"sequence"`
}

type PreloadOption

type PreloadOption struct {
	Relation    string         `json:"relation"`
	Columns     []string       `json:"columns"`
	OmitColumns []string       `json:"omit_columns"`
	Filters     []FilterOption `json:"filters"`
	Limit       *int           `json:"limit"`
	Offset      *int           `json:"offset"`
	Updatable   *bool          `json:"updateable"` // if true, the relation can be updated
}

type PrimaryKeyNameProvider

type PrimaryKeyNameProvider interface {
	GetIDName() string
}

PrimaryKeyNameProvider interface for models that provide primary key column names

type Request

type Request interface {
	Method() string
	URL() string
	Header(key string) string
	AllHeaders() map[string]string // Get all headers as a map
	Body() ([]byte, error)
	PathParam(key string) string
	QueryParam(key string) string
}

Request interface abstracts HTTP request

type RequestBody

type RequestBody struct {
	Operation string         `json:"operation"`
	Data      interface{}    `json:"data"`
	ID        *int64         `json:"id"`
	Options   RequestOptions `json:"options"`
}

type RequestOptions

type RequestOptions struct {
	Preload         []PreloadOption  `json:"preload"`
	Columns         []string         `json:"columns"`
	OmitColumns     []string         `json:"omit_columns"`
	Filters         []FilterOption   `json:"filters"`
	Sort            []SortOption     `json:"sort"`
	Limit           *int             `json:"limit"`
	Offset          *int             `json:"offset"`
	CustomOperators []CustomOperator `json:"customOperators"`
	ComputedColumns []ComputedColumn `json:"computedColumns"`
	Parameters      []Parameter      `json:"parameters"`
}

type Response

type Response struct {
	Success  bool        `json:"success"`
	Data     interface{} `json:"data"`
	Metadata *Metadata   `json:"metadata,omitempty"`
	Error    *APIError   `json:"error,omitempty"`
}

Response structures

type ResponseWriter

type ResponseWriter interface {
	SetHeader(key, value string)
	WriteHeader(statusCode int)
	Write(data []byte) (int, error)
	WriteJSON(data interface{}) error
}

ResponseWriter interface abstracts HTTP response

type Result

type Result interface {
	RowsAffected() int64
	LastInsertId() (int64, error)
}

Result interface for query execution results

type RouteRegistration

type RouteRegistration interface {
	Methods(methods ...string) RouteRegistration
	PathPrefix(prefix string) RouteRegistration
}

RouteRegistration allows method chaining for route configuration

type Router

type Router interface {
	HandleFunc(pattern string, handler HTTPHandlerFunc) RouteRegistration
	ServeHTTP(w ResponseWriter, r Request)
}

Router interface for HTTP router abstraction

type SchemaProvider

type SchemaProvider interface {
	SchemaName() string
}

SchemaProvider interface for models that provide schema names

type SelectQuery

type SelectQuery interface {
	Model(model interface{}) SelectQuery
	Table(table string) SelectQuery
	Column(columns ...string) SelectQuery
	Where(query string, args ...interface{}) SelectQuery
	WhereOr(query string, args ...interface{}) SelectQuery
	Join(query string, args ...interface{}) SelectQuery
	LeftJoin(query string, args ...interface{}) SelectQuery
	Preload(relation string, conditions ...interface{}) SelectQuery
	Order(order string) SelectQuery
	Limit(n int) SelectQuery
	Offset(n int) SelectQuery
	Group(group string) SelectQuery
	Having(having string, args ...interface{}) SelectQuery

	// Execution methods
	Scan(ctx context.Context, dest interface{}) error
	Count(ctx context.Context) (int, error)
	Exists(ctx context.Context) (bool, error)
}

SelectQuery interface for building SELECT queries (compatible with both GORM and Bun)

type SortOption

type SortOption struct {
	Column    string `json:"column"`
	Direction string `json:"direction"`
}

type TableMetadata

type TableMetadata struct {
	Schema    string   `json:"schema"`
	Table     string   `json:"table"`
	Columns   []Column `json:"columns"`
	Relations []string `json:"relations"`
}

type TableNameProvider

type TableNameProvider interface {
	TableName() string
}

TableNameProvider interface for models that provide table names

type UpdateQuery

type UpdateQuery interface {
	Model(model interface{}) UpdateQuery
	Table(table string) UpdateQuery
	Set(column string, value interface{}) UpdateQuery
	SetMap(values map[string]interface{}) UpdateQuery
	Where(query string, args ...interface{}) UpdateQuery
	Returning(columns ...string) UpdateQuery

	// Execution
	Exec(ctx context.Context) (Result, error)
}

UpdateQuery interface for building UPDATE queries

Directories

Path Synopsis
adapters

Jump to

Keyboard shortcuts

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