Documentation
¶
Index ¶
- Variables
- func ClearCache()
- func ConvertRowToStruct(data map[string]interface{}, structValue reflect.Value) error
- func ConvertValue(value interface{}, targetType reflect.Type) (interface{}, error)
- func GetFieldMap(obj interface{}) map[string]interface{}
- func GetFieldToColMap(i any, tableInfo *TableInfo) (map[string]string, error)
- func IsErrorCode(err error, code ErrorCode) bool
- func RecoverHandler(handler func(interface{}) error) func()
- func RegisterFactory(driver string, factory SQLFactory)
- func StructToMap(obj interface{}) (map[string]interface{}, error)
- func UnregisterFactory(driver string)
- type BatchOptions
- type Column
- type ColumnInfo
- type Condition
- func Between(field string, start, end interface{}) *Condition
- func Eq(field string, value interface{}) *Condition
- func Ge(field string, value interface{}) *Condition
- func Gt(field string, value interface{}) *Condition
- func In(field string, values ...interface{}) *Condition
- func IsNotNull(field string) *Condition
- func IsNull(field string) *Condition
- func Le(field string, value interface{}) *Condition
- func Like(field string, value interface{}) *Condition
- func Lt(field string, value interface{}) *Condition
- func Ne(field string, value interface{}) *Condition
- func NewCondition(field string, op OpType, value interface{}) *Condition
- func NotBetween(field string, start, end interface{}) *Condition
- func NotIn(field string, values ...interface{}) *Condition
- func NotLike(field string, value interface{}) *Condition
- type Conditions
- type ConnectionConfig
- type ConnectionPool
- type ConversionError
- type DBOptions
- type DataRow
- func (r *DataRow) GetBool(name string) bool
- func (r *DataRow) GetDataMap() map[string]any
- func (r *DataRow) GetFloat64(name string) float64
- func (r *DataRow) GetInt(name string) int
- func (r *DataRow) GetInt64(name string) int64
- func (r *DataRow) GetString(name string) string
- func (r *DataRow) GetTime(name string) time.Time
- type EnhancedError
- type ErrorCode
- type ErrorContext
- type ErrorHandler
- type ErrorLogger
- type ErrorRetrier
- type ErrorSeverity
- type FieldInfo
- type ITableModel
- type ITypeConverter
- type IsolationLevel
- type JoinType
- type LockType
- type MockSQLFactory
- func (f *MockSQLFactory) BuildBatchInsert(table string, values []map[string]interface{}) (string, []interface{})
- func (f *MockSQLFactory) BuildCreateTable(table string, modelType reflect.Type) string
- func (f *MockSQLFactory) BuildDelete(table string, conditions []*Condition) (string, []interface{})
- func (f *MockSQLFactory) BuildInsert(table string, fields map[string]interface{}, fieldOrder []string) (string, []interface{})
- func (f *MockSQLFactory) BuildOrderBy(orders []OrderBy) string
- func (f *MockSQLFactory) BuildRawQuery(query string, args []interface{}) (*SQLQuery, error)
- func (f *MockSQLFactory) BuildSelect(table string, fields []string, conditions []*Condition, orderBy string, ...) (string, []interface{})
- func (f *MockSQLFactory) BuildUpdate(table string, fields map[string]interface{}, fieldOrder []string, ...) (string, []interface{})
- func (f *MockSQLFactory) Connect(dsn string) (*sql.DB, error)
- func (f *MockSQLFactory) GetColumns(tableName string, db *sql.DB) ([]Column, error)
- func (f *MockSQLFactory) GetTableInfo(db *sql.DB, tableName string) (*TableInfo, error)
- func (f *MockSQLFactory) GetTables(db *sql.DB, pattern string) ([]string, error)
- func (f *MockSQLFactory) GetType() string
- type OpType
- type OrderBy
- type OrderType
- type ReplicationConfig
- type Result
- func (r *Result) Empty() bool
- func (r *Result) First() *Result
- func (r *Result) FromJSON(jsonStr string) error
- func (r *Result) GetFirstRow() (*DataRow, error)
- func (r *Result) GetRow(index int) (*DataRow, error)
- func (r *Result) Into(dest interface{}) error
- func (r *Result) IntoMap() (map[string]interface{}, error)
- func (r *Result) IntoMaps() ([]map[string]interface{}, error)
- func (r *Result) LastInsertId() (int64, error)
- func (r *Result) RowsAffected() (int64, error)
- func (r *Result) Scan(rows *sql.Rows) error
- func (r *Result) Size() int
- func (r *Result) ToJSON() (string, error)
- type RetryConfig
- type SQLFactory
- type SQLQuery
- type ScannerInfo
- type StackTrace
- type TableInfo
- type TableStruct
- type Transaction
- type TransactionFunc
- type TransactionOptions
- type TransactionPropagation
- type Transfer
- func (t *Transfer) CreateScanners(columns []string) []interface{}
- func (t *Transfer) First(rows *sql.Rows) (interface{}, error)
- func (t *Transfer) GetFieldNames() []string
- func (t *Transfer) GetPrimaryKeyValue(model interface{}) (interface{}, error)
- func (t *Transfer) GetTableName() string
- func (t *Transfer) Result(rows *sql.Rows) (interface{}, error)
- func (t *Transfer) ScanAll(rows *sql.Rows) (interface{}, error)
- func (t *Transfer) ScanRow(rows *sql.Rows) (interface{}, error)
- func (t *Transfer) ScanRows(rows *sql.Rows) (interface{}, error)
- func (t *Transfer) SetModel(model interface{})
- func (t *Transfer) ToMap(model interface{}, isUpdate ...bool) map[string]interface{}
- type TypeConverter
- type ValidationContext
- type ValidationError
- type ValidationManager
- func (vm *ValidationManager) AddCustomRule(field string, validate func(value interface{}) error, message string)
- func (vm *ValidationManager) AddRule(field string, rule ValidationRule)
- func (vm *ValidationManager) CrossFieldValidation(s interface{}, rules map[string]func(fields map[string]interface{}) error) []error
- func (vm *ValidationManager) ValidateField(field string, value interface{}) error
- func (vm *ValidationManager) ValidateStruct(s interface{}) []error
- type ValidationRule
- type Validator
Constants ¶
This section is empty.
Variables ¶
var CommonValidators = map[string]ValidationRule{ "required": { Name: "required", Validate: func(value interface{}) error { if value == nil { return fmt.Errorf("field is required") } if str, ok := value.(string); ok && strings.TrimSpace(str) == "" { return fmt.Errorf("field is required") } return nil }, Message: "field is required", }, "email": { Name: "email", Validate: func(value interface{}) error { if str, ok := value.(string); ok { pattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` matched, _ := regexp.MatchString(pattern, str) if !matched { return fmt.Errorf("invalid email format") } } return nil }, Message: "invalid email format", }, "min": { Name: "min", Validate: func(value interface{}) error { v := reflect.ValueOf(value) min := v.Interface().(int) if min < 0 { return fmt.Errorf("value must be at least %d", min) } return nil }, Message: "value is below minimum", }, "max": { Name: "max", Validate: func(value interface{}) error { v := reflect.ValueOf(value) max := v.Interface().(int) if max < 0 { return fmt.Errorf("value must be at most %d", max) } return nil }, Message: "value exceeds maximum", }, "pattern": { Name: "pattern", Validate: func(value interface{}) error { if str, ok := value.(string); ok { pattern, _ := value.(string) matched, _ := regexp.MatchString(pattern, str) if !matched { return fmt.Errorf("value does not match pattern") } } return nil }, Message: "value does not match pattern", }, }
CommonValidators provides commonly used validation rules
var Debug bool
Debug flag for enabling debug mode
var ErrEmptyTableName = errors.New("empty table name")
ErrEmptyTableName is returned when a table name is empty
var ErrManualRollback = errors.New("manual rollback")
ErrManualRollback is used to manually trigger a transaction rollback
Functions ¶
func ConvertRowToStruct ¶ added in v4.3.7
ConvertRowToStruct converts a single data row to a struct
func ConvertValue ¶ added in v4.2.4
ConvertValue converts a value to the target type using the global type converter
func GetFieldMap ¶ added in v4.2.4
func GetFieldMap(obj interface{}) map[string]interface{}
GetFieldMap returns a map of field names to their values for a struct
func GetFieldToColMap ¶ added in v4.3.6
func IsErrorCode ¶ added in v4.2.5
IsErrorCode checks if an error matches a specific error code
func RecoverHandler ¶ added in v4.2.5
func RecoverHandler(handler func(interface{}) error) func()
RecoverHandler provides a recovery function for panics
func RegisterFactory ¶
func RegisterFactory(driver string, factory SQLFactory)
RegisterFactory registers a SQL factory for a specific driver
func StructToMap ¶ added in v4.2.0
StructToMap converts a struct to a map[string]interface{} using gom tags Only non-zero values are included in the result
func UnregisterFactory ¶
func UnregisterFactory(driver string)
UnregisterFactory removes a SQL factory for a specific driver
Types ¶
type BatchOptions ¶ added in v4.1.4
type BatchOptions struct { // BatchSize is the size of each batch BatchSize int // Concurrency is the number of concurrent goroutines for batch processing // If set to 0, defaults to 1 (no concurrency) Concurrency int // Timeout is the maximum duration for the entire batch operation // If set to 0, no timeout is applied Timeout time.Duration // RetryCount is the number of times to retry a failed batch // If set to 0, no retries are attempted RetryCount int // RetryInterval is the duration to wait between retries // If set to 0, defaults to 1 second RetryInterval time.Duration }
BatchOptions defines configuration options for batch operations
func DefaultBatchOptions ¶ added in v4.1.4
func DefaultBatchOptions() BatchOptions
DefaultBatchOptions returns the default batch operation options
func (*BatchOptions) Validate ¶ added in v4.1.4
func (o *BatchOptions) Validate() error
Validate validates the batch options and sets defaults if necessary
type ColumnInfo ¶
type ColumnInfo struct { Name string // 列名 TypeName string // 数据库类型名称 DataType reflect.Type // 标准SQL数据类型 Length int64 // 长度 Precision int // 精度 Scale int // 小数位数 IsNullable bool // 是否可空 IsPrimaryKey bool // 是否主键 IsAutoIncrement bool // 是否自增 DefaultValue string // 默认值 Comment string // 注释 }
ColumnInfo 列信息
type Condition ¶
type Condition struct { Field string Op OpType Value interface{} JoinType JoinType SubConds []*Condition // Sub-conditions for nested queries IsSubGroup bool // Whether this is a sub-group of conditions }
Condition represents a WHERE condition
func In ¶ added in v4.1.3
In creates an IN condition with variadic parameters that may include arrays
func NewCondition ¶ added in v4.1.3
NewCondition creates a new condition
func NotBetween ¶ added in v4.1.3
func NotIn ¶ added in v4.1.3
NotIn creates a NOT IN condition with variadic parameters that may include arrays
type Conditions ¶ added in v4.1.5
type Conditions []Condition
Conditions represents a slice of Condition
type ConnectionConfig ¶ added in v4.2.6
type ConnectionConfig struct { MaxOpenConns int // 最大打开连接数 MaxIdleConns int // 最大空闲连接数 ConnMaxLifetime time.Duration // 连接最大生命周期 ConnMaxIdleTime time.Duration // 空闲连接最大生命周期 }
ConnectionConfig 数据库连接配置
type ConnectionPool ¶ added in v4.2.6
type ConnectionPool interface { GetConnection() (*sql.DB, error) ReturnConnection(*sql.DB) HealthCheck() error Close() error }
ConnectionPool 连接池接口
type ConversionError ¶ added in v4.2.5
ConversionError represents an error that occurs during type conversion
func (*ConversionError) Error ¶ added in v4.2.5
func (e *ConversionError) Error() string
type DBOptions ¶ added in v4.1.4
type DBOptions struct { // MaxOpenConns is the maximum number of open connections to the database // If MaxOpenConns <= 0, then there is no limit on the number of open connections MaxOpenConns int // MaxIdleConns is the maximum number of connections in the idle connection pool // If MaxIdleConns <= 0, no idle connections are retained MaxIdleConns int // ConnMaxLifetime is the maximum amount of time a connection may be reused // If ConnMaxLifetime <= 0, connections are not closed due to their age ConnMaxLifetime time.Duration // ConnMaxIdleTime is the maximum amount of time a connection may be idle // If ConnMaxIdleTime <= 0, connections are not closed due to idle time ConnMaxIdleTime time.Duration // Debug enables debug logging of SQL queries Debug bool }
DBOptions defines database connection and pool configuration
func DefaultDBOptions ¶ added in v4.1.4
func DefaultDBOptions() DBOptions
DefaultDBOptions returns the default database options
type DataRow ¶ added in v4.3.7
type DataRow struct {
// contains filtered or unexported fields
}
DataRow represents a single row of data from Result
func (*DataRow) GetDataMap ¶ added in v4.3.7
GetDataMap returns the underlying map data
func (*DataRow) GetFloat64 ¶ added in v4.3.7
GetFloat64 returns the float64 value for the given column name
func (*DataRow) GetInt64 ¶ added in v4.3.7
GetInt64 returns the int64 value for the given column name
type EnhancedError ¶ added in v4.2.5
type EnhancedError struct { Code ErrorCode Message string Severity ErrorSeverity Context ErrorContext Cause error }
EnhancedError represents a detailed error with context
func NewError ¶ added in v4.2.5
func NewError(code ErrorCode, message string, severity ErrorSeverity, cause error) *EnhancedError
NewError creates a new enhanced error
func (*EnhancedError) Error ¶ added in v4.2.5
func (e *EnhancedError) Error() string
func (*EnhancedError) WithData ¶ added in v4.2.5
func (e *EnhancedError) WithData(key string, value interface{}) *EnhancedError
WithData adds contextual data to the error
type ErrorCode ¶ added in v4.2.5
type ErrorCode string
ErrorCode represents specific error types
const ( // Database error codes ErrDatabaseConnection ErrorCode = "DB_CONNECTION_ERROR" ErrDatabaseQuery ErrorCode = "DB_QUERY_ERROR" ErrDatabaseExec ErrorCode = "DB_EXEC_ERROR" ErrDatabaseTx ErrorCode = "DB_TRANSACTION_ERROR" // Validation error codes ErrValidation ErrorCode = "VALIDATION_ERROR" ErrInvalidInput ErrorCode = "INVALID_INPUT" ErrInvalidType ErrorCode = "INVALID_TYPE" ErrRequired ErrorCode = "REQUIRED_FIELD" ErrInvalidFormat ErrorCode = "INVALID_FORMAT" ErrUniqueConstraint ErrorCode = "UNIQUE_CONSTRAINT" // Security error codes ErrEncryption ErrorCode = "ENCRYPTION_ERROR" ErrDecryption ErrorCode = "DECRYPTION_ERROR" ErrKeyManagement ErrorCode = "KEY_MANAGEMENT_ERROR" // Configuration error codes ErrConfiguration ErrorCode = "CONFIGURATION_ERROR" ErrEnvironment ErrorCode = "ENVIRONMENT_ERROR" // System error codes ErrInternal ErrorCode = "INTERNAL_ERROR" ErrTimeout ErrorCode = "TIMEOUT_ERROR" ErrIO ErrorCode = "IO_ERROR" )
type ErrorContext ¶ added in v4.2.5
type ErrorContext struct { Timestamp time.Time Stack []StackTrace Data map[string]interface{} }
ErrorContext contains contextual information about an error
func GetErrorContext ¶ added in v4.2.5
func GetErrorContext(err error) *ErrorContext
GetErrorContext retrieves the context from an error if available
type ErrorHandler ¶ added in v4.2.5
type ErrorHandler struct {
// contains filtered or unexported fields
}
ErrorHandler handles and processes errors
func NewErrorHandler ¶ added in v4.2.5
func NewErrorHandler() *ErrorHandler
NewErrorHandler creates a new error handler
func (*ErrorHandler) Handle ¶ added in v4.2.5
func (h *ErrorHandler) Handle(err error) error
Handle processes an error using registered handlers
func (*ErrorHandler) RegisterHandler ¶ added in v4.2.5
func (h *ErrorHandler) RegisterHandler(code ErrorCode, handler func(*EnhancedError) error)
RegisterHandler registers a handler for a specific error code
type ErrorLogger ¶ added in v4.2.5
type ErrorLogger struct {
// contains filtered or unexported fields
}
ErrorLogger provides error logging functionality
func NewErrorLogger ¶ added in v4.2.5
func NewErrorLogger(minSeverity ErrorSeverity, logFunc func(error)) *ErrorLogger
NewErrorLogger creates a new error logger
func (*ErrorLogger) Log ¶ added in v4.2.5
func (l *ErrorLogger) Log(err error)
Log logs an error if it meets the minimum severity level
type ErrorRetrier ¶ added in v4.2.5
type ErrorRetrier struct {
// contains filtered or unexported fields
}
ErrorRetrier provides retry functionality for operations that may fail
func NewErrorRetrier ¶ added in v4.2.5
func NewErrorRetrier(maxAttempts int, backoff time.Duration) *ErrorRetrier
NewErrorRetrier creates a new error retrier
func (*ErrorRetrier) Retry ¶ added in v4.2.5
func (r *ErrorRetrier) Retry(operation func() error) error
Retry attempts an operation with retries
type ErrorSeverity ¶ added in v4.2.5
type ErrorSeverity int
ErrorSeverity represents the severity level of an error
const ( SeverityDebug ErrorSeverity = iota SeverityInfo SeverityWarning SeverityError SeverityCritical )
type FieldInfo ¶ added in v4.2.0
type FieldInfo struct { Index int // Field index in struct Name string // Field name in struct Column string // Column name in database Type reflect.Type // Field type IsAuto bool // Is auto-increment field IsPrimary bool // Is primary key HasDefault bool // Has default value }
FieldInfo stores the mapping information for a single field
type ITableModel ¶
type ITableModel interface { // TableName returns the custom table name TableName() string // CreateSql returns the custom CREATE TABLE SQL statement CreateSql() string }
ITableModel defines the interface for custom table models
type ITypeConverter ¶ added in v4.2.5
type ITypeConverter interface {
Convert(value interface{}, targetType reflect.Type) (interface{}, error)
}
ITypeConverter defines the interface for type conversion
func NewTypeConverter ¶ added in v4.2.5
func NewTypeConverter() ITypeConverter
NewTypeConverter creates a new ITypeConverter instance
type IsolationLevel ¶ added in v4.1.5
type IsolationLevel sql.IsolationLevel
IsolationLevel represents the transaction isolation level
const ( // LevelDefault is the default isolation level for the database LevelDefault IsolationLevel = IsolationLevel(sql.LevelDefault) // LevelReadUncommitted is the read uncommitted isolation level LevelReadUncommitted IsolationLevel = IsolationLevel(sql.LevelReadUncommitted) // LevelReadCommitted is the read committed isolation level LevelReadCommitted IsolationLevel = IsolationLevel(sql.LevelReadCommitted) // LevelWriteCommitted is the write committed isolation level LevelWriteCommitted IsolationLevel = IsolationLevel(sql.LevelWriteCommitted) // LevelRepeatableRead is the repeatable read isolation level LevelRepeatableRead IsolationLevel = IsolationLevel(sql.LevelRepeatableRead) // LevelSnapshot is the snapshot isolation level LevelSnapshot IsolationLevel = IsolationLevel(sql.LevelSnapshot) // LevelSerializable is the serializable isolation level LevelSerializable IsolationLevel = IsolationLevel(sql.LevelSerializable) // LevelLinearizable is the linearizable isolation level LevelLinearizable IsolationLevel = IsolationLevel(sql.LevelLinearizable) )
type MockSQLFactory ¶ added in v4.2.4
type MockSQLFactory struct{}
MockSQLFactory is a mock implementation of SQLFactory for testing
func (*MockSQLFactory) BuildBatchInsert ¶ added in v4.2.4
func (f *MockSQLFactory) BuildBatchInsert(table string, values []map[string]interface{}) (string, []interface{})
func (*MockSQLFactory) BuildCreateTable ¶ added in v4.2.4
func (f *MockSQLFactory) BuildCreateTable(table string, modelType reflect.Type) string
func (*MockSQLFactory) BuildDelete ¶ added in v4.2.4
func (f *MockSQLFactory) BuildDelete(table string, conditions []*Condition) (string, []interface{})
func (*MockSQLFactory) BuildInsert ¶ added in v4.2.4
func (f *MockSQLFactory) BuildInsert(table string, fields map[string]interface{}, fieldOrder []string) (string, []interface{})
func (*MockSQLFactory) BuildOrderBy ¶ added in v4.2.4
func (f *MockSQLFactory) BuildOrderBy(orders []OrderBy) string
func (*MockSQLFactory) BuildRawQuery ¶ added in v4.2.4
func (f *MockSQLFactory) BuildRawQuery(query string, args []interface{}) (*SQLQuery, error)
func (*MockSQLFactory) BuildSelect ¶ added in v4.2.4
func (*MockSQLFactory) BuildUpdate ¶ added in v4.2.4
func (*MockSQLFactory) Connect ¶ added in v4.2.4
func (f *MockSQLFactory) Connect(dsn string) (*sql.DB, error)
func (*MockSQLFactory) GetColumns ¶ added in v4.2.8
func (*MockSQLFactory) GetTableInfo ¶ added in v4.2.4
func (*MockSQLFactory) GetType ¶ added in v4.2.4
func (f *MockSQLFactory) GetType() string
type OpType ¶ added in v4.1.3
type OpType int
OpType represents the type of operation
const ( // OpEq represents equals operation OpEq OpType = iota // OpNe represents not equals operation OpNe // OpGt represents greater than operation OpGt // OpGe represents greater than or equals operation OpGe // OpLt represents less than operation OpLt // OpLe represents less than or equals operation OpLe // OpLike represents LIKE operation OpLike // OpNotLike represents NOT LIKE operation OpNotLike // OpIn represents IN operation OpIn // OpNotIn represents NOT IN operation OpNotIn // OpIsNull represents IS NULL operation OpIsNull // OpIsNotNull represents IS NOT NULL operation OpIsNotNull // OpBetween represents BETWEEN operation OpBetween // OpNotBetween represents NOT BETWEEN operation OpNotBetween // OpCustom represents custom operation OpCustom )
type ReplicationConfig ¶ added in v4.2.6
type ReplicationConfig struct { Master *ConnectionConfig Slaves []*ConnectionConfig }
ReplicationConfig 主从配置
type Result ¶
type Result struct { ID int64 `json:"id"` Affected int64 `json:"affected"` Error error `json:"error"` Data []map[string]any `json:"data"` Columns []string `json:"columns"` }
Result implements sql.Result interface and includes query result functionality
func (*Result) GetFirstRow ¶ added in v4.3.7
GetFirstRow returns the first DataRow from the result
func (*Result) Into ¶ added in v4.1.6
Into converts the result data into the specified struct slice or struct pointer
func (*Result) LastInsertId ¶
LastInsertId returns the last inserted ID
func (*Result) RowsAffected ¶
RowsAffected returns the number of rows affected
type RetryConfig ¶ added in v4.2.6
type RetryConfig struct { MaxRetries int // 最大重试次数 RetryDelay time.Duration // 重试延迟 MaxDelay time.Duration // 最大延迟 }
RetryConfig 重试配置
type SQLFactory ¶
type SQLFactory interface { // Connect creates a new database connection Connect(dsn string) (*sql.DB, error) // GetType returns the database type (e.g., "mysql", "postgres") GetType() string // BuildSelect builds a SELECT query BuildSelect(table string, fields []string, conditions []*Condition, orderBy string, limit, offset int) (string, []interface{}) // BuildUpdate builds an UPDATE query BuildUpdate(table string, fields map[string]interface{}, fieldOrder []string, conditions []*Condition) (string, []interface{}) // BuildInsert builds an INSERT query BuildInsert(table string, fields map[string]interface{}, fieldOrder []string) (string, []interface{}) // BuildBatchInsert builds a batch INSERT query BuildBatchInsert(table string, values []map[string]interface{}) (string, []interface{}) // BuildDelete builds a DELETE query BuildDelete(table string, conditions []*Condition) (string, []interface{}) // BuildCreateTable builds a CREATE TABLE query BuildCreateTable(table string, modelType reflect.Type) string // GetTableInfo 获取表信息 GetTableInfo(db *sql.DB, tableName string) (*TableInfo, error) // GetTables 获取符合模式的所有表 // pattern: 表名匹配模式,支持 * 通配符 // 对于 PostgreSQL,pattern 可以是 schema.table 格式 GetTables(db *sql.DB, pattern string) ([]string, error) GetColumns(tableName string, db *sql.DB) ([]Column, error) // BuildOrderBy builds the ORDER BY clause BuildOrderBy(orders []OrderBy) string }
SQLFactory defines the interface for SQL query builders
func GetFactory ¶
func GetFactory(driver string) (SQLFactory, error)
GetFactory returns the SQL factory for a specific driver
type SQLQuery ¶ added in v4.2.4
type SQLQuery struct { Query string Args []interface{} }
SQLQuery represents a SQL query with its arguments
type ScannerInfo ¶ added in v4.2.0
type ScannerInfo struct { Index int // Field index in struct Scanner interface{} // Pre-allocated scanner Convert func(interface{}) interface{} // Value converter function }
ScannerInfo stores information for scanning database columns
type StackTrace ¶ added in v4.2.5
StackTrace represents a stack trace
type TableInfo ¶
type TableInfo struct { TableName string // 表名 TableComment string // 表注释 PrimaryKeys []string // 主键列表 Columns []ColumnInfo // 列信息 HasDecimal bool // 是否包含 Decimal 类型 HasUUID bool // 是否包含 UUID 类型 HasIP bool // 是否包含 IP 类型 }
TableInfo 表信息
type TableStruct ¶ added in v4.3.6
type Transaction ¶ added in v4.1.5
type Transaction struct {
// contains filtered or unexported fields
}
Transaction represents a database transaction
func NewTransaction ¶ added in v4.1.5
func NewTransaction(db interface{}, tx interface{}, driver string) *Transaction
NewTransaction creates a new transaction
func (*Transaction) GetDB ¶ added in v4.1.5
func (t *Transaction) GetDB() interface{}
GetDB returns the database instance
func (*Transaction) GetDriver ¶ added in v4.1.5
func (t *Transaction) GetDriver() string
GetDriver returns the database driver name
func (*Transaction) GetTx ¶ added in v4.1.5
func (t *Transaction) GetTx() interface{}
GetTx returns the transaction instance
type TransactionFunc ¶ added in v4.1.5
type TransactionFunc func(tx *Transaction) Result
TransactionFunc represents a function that executes within a transaction
type TransactionOptions ¶ added in v4.1.5
type TransactionOptions struct { Timeout time.Duration IsolationLevel IsolationLevel PropagationMode TransactionPropagation ReadOnly bool }
TransactionOptions represents options for transaction
type TransactionPropagation ¶ added in v4.1.5
type TransactionPropagation int
TransactionPropagation defines transaction propagation behavior
const ( // PropagationRequired starts a new transaction if none exists PropagationRequired TransactionPropagation = iota // PropagationRequiresNew always starts a new transaction PropagationRequiresNew // PropagationNested starts a nested transaction if possible PropagationNested // PropagationSupports uses existing transaction if available PropagationSupports // PropagationNotSupported suspends current transaction if exists PropagationNotSupported // PropagationNever throws exception if transaction exists PropagationNever // PropagationMandatory throws exception if no transaction exists PropagationMandatory )
type Transfer ¶ added in v4.2.0
type Transfer struct { TableName string // Table name Fields map[string]*FieldInfo // Map of column name to field info FieldOrder []string // Order of fields for consistent operations PrimaryKey *FieldInfo // Primary key field info // contains filtered or unexported fields }
Transfer caches the mapping between struct and database table
func GetTransfer ¶ added in v4.2.0
func GetTransfer(model interface{}) *Transfer
GetTransfer gets or creates a Transfer for the given struct type
func (*Transfer) CreateScanners ¶ added in v4.2.0
CreateScanners creates a list of scanners for the given columns
func (*Transfer) GetFieldNames ¶ added in v4.2.0
GetFieldNames returns all field names in order
func (*Transfer) GetPrimaryKeyValue ¶ added in v4.2.0
GetPrimaryKeyValue gets the primary key value from the model
func (*Transfer) GetTableName ¶ added in v4.2.0
GetTableName returns the cached table name
func (*Transfer) ScanRow ¶ added in v4.2.0
ScanRow scans a database row into a new instance of the model
func (*Transfer) ScanRows ¶ added in v4.2.4
ScanRows scans multiple rows into a slice of model instances
type TypeConverter ¶ added in v4.2.2
type TypeConverter interface { // FromDB converts a value from database format to Go type FromDB(value interface{}) error // ToDB converts a Go type to database format ToDB() (interface{}, error) }
TypeConverter is the interface that wraps the basic type conversion methods
type ValidationContext ¶ added in v4.2.5
type ValidationContext struct { FieldName string Value interface{} Parent interface{} Rules []ValidationRule }
ValidationContext provides context for validation
type ValidationError ¶ added in v4.2.5
ValidationError represents a validation error
func (*ValidationError) Error ¶ added in v4.2.5
func (e *ValidationError) Error() string
type ValidationManager ¶ added in v4.2.5
type ValidationManager struct {
// contains filtered or unexported fields
}
ValidationManager handles validation rules and execution
func NewValidationManager ¶ added in v4.2.5
func NewValidationManager() *ValidationManager
NewValidationManager creates a new validation manager
func (*ValidationManager) AddCustomRule ¶ added in v4.2.5
func (vm *ValidationManager) AddCustomRule(field string, validate func(value interface{}) error, message string)
AddCustomRule adds a custom validation rule
func (*ValidationManager) AddRule ¶ added in v4.2.5
func (vm *ValidationManager) AddRule(field string, rule ValidationRule)
AddRule adds a validation rule for a field
func (*ValidationManager) CrossFieldValidation ¶ added in v4.2.5
func (vm *ValidationManager) CrossFieldValidation(s interface{}, rules map[string]func(fields map[string]interface{}) error) []error
CrossFieldValidation validates fields that depend on each other
func (*ValidationManager) ValidateField ¶ added in v4.2.5
func (vm *ValidationManager) ValidateField(field string, value interface{}) error
ValidateField validates a single field
func (*ValidationManager) ValidateStruct ¶ added in v4.2.5
func (vm *ValidationManager) ValidateStruct(s interface{}) []error
ValidateStruct validates a struct using reflection
type ValidationRule ¶ added in v4.2.5
type ValidationRule struct { Name string Validate func(value interface{}) error Message string Parameters map[string]interface{} }
ValidationRule defines a validation rule
type Validator ¶ added in v4.2.5
type Validator interface {
Validate(ctx *ValidationContext) error
}
Validator defines the validation interface