Documentation
¶
Index ¶
- Constants
- Variables
- func RegisterFactory(driver string, factory SQLFactory)
- func UnregisterFactory(driver string)
- type BatchOptions
- 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 DBOptions
- type ITableModel
- type JoinType
- type OpType
- type OrderBy
- type OrderType
- type Result
- type SQLFactory
- type TableInfo
Constants ¶
const ( // Version is the current version of gom Version = "v4.1.0" // VersionInfo contains additional version information VersionInfo = ` Gom Database Framework ` + Version + ` - Added customizable database connection options - Enhanced batch operation performance - Improved connection pool management - Added progress tracking for batch operations ` )
Version information
Variables ¶
var Debug bool
Debug flag for enabling debug mode
var ErrManualRollback = errors.New("manual rollback")
ErrManualRollback is used to manually trigger a transaction rollback
Functions ¶
func RegisterFactory ¶
func RegisterFactory(driver string, factory SQLFactory)
RegisterFactory registers a SQL factory for a specific driver
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 // 列名
Type string // 数据库类型
Length int64 // 长度
Precision int // 精度
Scale int // 小数位数
IsNullable bool // 是否可空
IsPrimaryKey bool // 是否主键
IsAutoIncrement bool // 是否自增
DefaultValue string // 默认值
Comment string // 注释
}
ColumnInfo 列信息
type Condition ¶
type Condition struct {
Field string // Field name
Op OpType // Operator type
Value interface{} // Value to compare against
Join JoinType // How this condition joins with others (AND/OR)
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 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 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 OpType ¶ added in v4.1.3
type OpType int
OpType represents the type of condition operator
const ( OpEq OpType = iota // Equal OpNe // Not Equal OpGt // Greater Than OpGe // Greater Than or Equal OpLt // Less Than OpLe // Less Than or Equal OpLike // LIKE OpNotLike // NOT LIKE OpIn // IN OpNotIn // NOT IN OpIsNull // IS NULL OpIsNotNull // IS NOT NULL OpBetween // BETWEEN OpNotBetween // NOT BETWEEN OpCustom // Custom operator for special cases )
type Result ¶
Result implements sql.Result interface
func (*Result) LastInsertId ¶
LastInsertId returns the last inserted ID
func (*Result) RowsAffected ¶
RowsAffected returns the number of rows affected
type SQLFactory ¶
type SQLFactory interface {
// Connect creates a new database connection
Connect(dsn string) (*sql.DB, error)
// 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)
// 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