Documentation
¶
Overview ¶
Example (Databasemgr_advancedOperations) ¶
Example_databasemgr_advancedOperations 演示高级数据库操作
package main
import (
"github.com/lite-lake/litecore-go/manager/databasemgr"
)
func main() {
// 假设已经创建了 dbMgr
var dbMgr databasemgr.IDatabaseManager
// 1. 自动迁移
// err := dbMgr.AutoMigrate(&User{}, &Product{}, &Order{})
// 2. 原生 SQL 查询
// var results []map[string]interface{}
// dbMgr.Raw("SELECT * FROM users WHERE age > ?", 18).Scan(&results)
// 3. 执行原生 SQL
// dbMgr.Exec("UPDATE users SET status = ? WHERE id = ?", "active", 1)
// 4. 使用上下文(支持超时控制)
// ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// defer cancel()
// dbMgr.WithContext(ctx).Find(&users)
// 5. 获取连接池统计信息
// stats := dbMgr.Stats()
// fmt.Printf("OpenConnections: %d\n", stats.OpenConnections)
// fmt.Printf("InUse: %d\n", stats.InUse)
// 6. 健康检查
// if err := dbMgr.Health(); err != nil {
// loggerMgr := loggermgr.GetLoggerManager()
// loggerMgr.Logger("main").Error("Database health check failed", "error", err)
// }
_ = dbMgr
}
Output:
Example (Databasemgr_basicOperations) ¶
Example_databasemgr_basicOperations 演示基本的数据库操作
package main
import (
"github.com/lite-lake/litecore-go/manager/databasemgr"
)
func main() {
// 假设已经创建了 dbMgr
var dbMgr databasemgr.IDatabaseManager
// 1. 简单查询
// type User struct {
// ID uint
// Name string
// }
// var user User
// dbMgr.DB().First(&user, 1)
// 2. 创建记录
// user := User{Name: "John"}
// dbMgr.DB().Create(&user)
// 3. 更新记录
// dbMgr.DB().Model(&user).Update("Name", "Jane")
// 4. 删除记录
// dbMgr.DB().Delete(&user)
// 5. 事务操作
// err := dbMgr.Transaction(func(tx *gorm.DB) error {
// if err := tx.Create(&User{Name: "Alice"}).Error; err != nil {
// return err // 会回滚
// }
// return nil // 提交
// })
_ = dbMgr
}
Output:
Example (Databasemgr_configuration) ¶
Example_databasemgr_configuration 演示配置格式
package main
import ()
func main() {
// 配置文件示例(YAML 格式):
//
// database:
// driver: mysql
// mysql_config:
// dsn: "root:password@tcp(localhost:3306)/mydb?charset=utf8mb4&parseTime=True&loc=Local"
// pool_config:
// max_open_conns: 100
// max_idle_conns: 10
// conn_max_lifetime: 3600 # 秒
// conn_max_idle_time: 600 # 秒
//
// 或者使用 PostgreSQL 数据库:
//
// database:
// driver: postgresql
// postgresql_config:
// dsn: "host=localhost port=5432 user=postgres password=password dbname=mydb sslmode=disable"
// pool_config:
// max_open_conns: 50
// max_idle_conns: 10
//
// 或者使用 SQLite 数据库:
//
// database:
// driver: sqlite
// sqlite_config:
// dsn: "file:./cache.db?cache=shared&mode=rwc"
}
Output:
Example (Databasemgr_withConfigProvider) ¶
Example_databasemgr_withConfigProvider 演示如何使用 ConfigMgr 创建 IDatabaseManager
package main
import ()
func main() {
// 方式2: 使用 ConfigMgr(推荐用于依赖注入场景)
// import loggermgr "github.com/lite-lake/litecore-go/component/manager/loggermgr"
// provider := configmgr.NewYamlConfigProvider("config.yaml")
// dbMgr, err := databasemgr.BuildWithConfigProvider(provider)
// if err != nil {
// loggerMgr := loggermgr.GetLoggerManager()
// loggerMgr.Logger("main").Fatal("Failed to create database manager", "error", err)
// }
// defer dbMgr.Close()
// 使用数据库
// db := dbMgr.DB()
// var users []User
// db.Find(&users)
}
Output:
Example (Databasemgr_withFactory) ¶
Example_databasemgr_withFactory 演示如何使用工厂模式创建 IDatabaseManager
package main
import (
"github.com/lite-lake/litecore-go/manager/databasemgr"
)
func main() {
// 方式1: 直接使用 Build 函数
cfg := map[string]any{
"dsn": ":memory:",
}
dbMgr, _ := databasemgr.Build("sqlite", cfg, nil, nil)
defer dbMgr.Close()
// 使用数据库
// db := dbMgr.DB()
// var users []User
// db.Find(&users)
_ = dbMgr
}
Output:
Index ¶
- Constants
- func ValidateContext(ctx context.Context) error
- func ValidateDSN(dsn string) error
- type DatabaseConfig
- type IDatabaseManager
- func Build(driverType string, driverConfig map[string]any, ...) (IDatabaseManager, error)
- func BuildWithConfigProvider(configProvider configmgr.IConfigManager, loggerMgr loggermgr.ILoggerManager, ...) (IDatabaseManager, error)
- func NewDatabaseManagerMySQLImpl(cfg *MySQLConfig, loggerMgr loggermgr.ILoggerManager, ...) (IDatabaseManager, error)
- func NewDatabaseManagerNoneImpl(loggerMgr loggermgr.ILoggerManager, ...) IDatabaseManager
- func NewDatabaseManagerPostgreSQLImpl(cfg *PostgreSQLConfig, loggerMgr loggermgr.ILoggerManager, ...) (IDatabaseManager, error)
- func NewDatabaseManagerSQLiteImpl(cfg *SQLiteConfig, loggerMgr loggermgr.ILoggerManager, ...) (IDatabaseManager, error)
- type MySQLConfig
- type ObservabilityConfig
- type PoolConfig
- type PostgreSQLConfig
- type SQLiteConfig
Examples ¶
Constants ¶
const ( // 默认连接池配置 DefaultMaxOpenConns = 10 DefaultMaxIdleConns = 5 DefaultConnMaxLifetime = 30 * time.Second DefaultConnMaxIdleTime = 5 * time.Minute )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DatabaseConfig ¶
type DatabaseConfig struct {
Driver string `yaml:"driver"` // 驱动类型: mysql, postgresql, sqlite, none
SQLiteConfig *SQLiteConfig `yaml:"sqlite_config"` // SQLite 配置
PostgreSQLConfig *PostgreSQLConfig `yaml:"postgresql_config"` // PostgreSQL 配置
MySQLConfig *MySQLConfig `yaml:"mysql_config"` // MySQL 配置
ObservabilityConfig *ObservabilityConfig `yaml:"observability_config"` // 可观测性配置
AutoMigrate bool `yaml:"auto_migrate"` // 是否自动迁移数据库表结构(默认 false)
}
DatabaseConfig 数据库管理配置
func ParseDatabaseConfigFromMap ¶
func ParseDatabaseConfigFromMap(cfg map[string]any) (*DatabaseConfig, error)
ParseDatabaseConfigFromMap 从 map 解析数据库配置
type IDatabaseManager ¶
type IDatabaseManager interface {
common.IBaseManager
// ========== GORM 核心 ==========
// DB 获取 GORM 数据库实例
DB() *gorm.DB
// Model 指定模型进行操作
Model(value any) *gorm.DB
// Table 指定表名进行操作
Table(name string) *gorm.DB
// WithContext 设置上下文
WithContext(ctx context.Context) *gorm.DB
// ========== 事务管理 ==========
// Transaction 执行事务
Transaction(fn func(*gorm.DB) error, opts ...*sql.TxOptions) error
// Begin 开启事务
Begin(opts ...*sql.TxOptions) *gorm.DB
// ========== 迁移管理 ==========
// AutoMigrate 自动迁移
AutoMigrate(models ...any) error
// Migrator 获取迁移器
Migrator() gorm.Migrator
// ========== 连接管理 ==========
// Driver 获取数据库驱动类型
Driver() string
// Ping 检查数据库连接
Ping(ctx context.Context) error
// Stats 获取连接池统计信息
Stats() sql.DBStats
// Close 关闭数据库连接
Close() error
// ========== 原生 SQL ==========
// Exec 执行原生 SQL
Exec(sql string, values ...any) *gorm.DB
// Raw 执行原生查询
Raw(sql string, values ...any) *gorm.DB
}
IDatabaseManager 数据库管理器接口(完全基于 GORM)
func Build ¶
func Build( driverType string, driverConfig map[string]any, loggerMgr loggermgr.ILoggerManager, telemetryMgr telemetrymgr.ITelemetryManager, ) (IDatabaseManager, error)
Build 创建数据库管理器实例 参数:
- driverType: 驱动类型 ("mysql", "postgresql", "sqlite", "none")
- driverConfig: 驱动配置 (根据驱动类型不同而不同)
- mysql: 传递给 parseMySQLConfig 的 map[string]any
- postgresql: 传递给 parsePostgreSQLConfig 的 map[string]any
- sqlite: 传递给 parseSQLiteConfig 的 map[string]any
- none: 忽略
- loggerMgr: 日志管理器
- telemetryMgr: 遥测管理器
返回 IDatabaseManager 接口实例和可能的错误
func BuildWithConfigProvider ¶
func BuildWithConfigProvider( configProvider configmgr.IConfigManager, loggerMgr loggermgr.ILoggerManager, telemetryMgr telemetrymgr.ITelemetryManager, ) (IDatabaseManager, error)
BuildWithConfigProvider 从配置提供者创建数据库管理器实例 自动从配置提供者读取 database.driver 和对应驱动配置 参数:
- configProvider: 配置提供者
- loggerMgr: 日志管理器
- telemetryMgr: 遥测管理器
配置路径:
- database.driver: 驱动类型 ("mysql", "postgresql", "sqlite", "none")
- database.mysql_config: MySQL 驱动配置(当 driver=mysql 时使用)
- database.postgresql_config: PostgreSQL 驱动配置(当 driver=postgresql 时使用)
- database.sqlite_config: SQLite 驱动配置(当 driver=sqlite 时使用)
返回 IDatabaseManager 接口实例和可能的错误
func NewDatabaseManagerMySQLImpl ¶
func NewDatabaseManagerMySQLImpl( cfg *MySQLConfig, loggerMgr loggermgr.ILoggerManager, telemetryMgr telemetrymgr.ITelemetryManager, ) (IDatabaseManager, error)
NewDatabaseManagerMySQLImpl 创建 MySQL 数据库管理器 参数:
- cfg: MySQL 配置
- loggerMgr: 日志管理器
- telemetryMgr: 遥测管理器
func NewDatabaseManagerNoneImpl ¶
func NewDatabaseManagerNoneImpl( loggerMgr loggermgr.ILoggerManager, telemetryMgr telemetrymgr.ITelemetryManager, ) IDatabaseManager
NewDatabaseManagerNoneImpl 创建空数据库管理器
func NewDatabaseManagerPostgreSQLImpl ¶
func NewDatabaseManagerPostgreSQLImpl( cfg *PostgreSQLConfig, loggerMgr loggermgr.ILoggerManager, telemetryMgr telemetrymgr.ITelemetryManager, ) (IDatabaseManager, error)
NewDatabaseManagerPostgreSQLImpl 创建 PostgreSQL 数据库管理器 参数:
- cfg: PostgreSQL 配置
- loggerMgr: 日志管理器
- telemetryMgr: 遥测管理器
func NewDatabaseManagerSQLiteImpl ¶
func NewDatabaseManagerSQLiteImpl( cfg *SQLiteConfig, loggerMgr loggermgr.ILoggerManager, telemetryMgr telemetrymgr.ITelemetryManager, ) (IDatabaseManager, error)
NewDatabaseManagerSQLiteImpl 创建 SQLite 数据库管理器 参数:
- cfg: SQLite 配置
- loggerMgr: 日志管理器
- telemetryMgr: 遥测管理器
type MySQLConfig ¶
type MySQLConfig struct {
DSN string `yaml:"dsn"` // MySQL DSN,如: root:password@tcp(localhost:3306)/lite_demo?
// charset=utf8mb4&parseTime=True&loc=Local
PoolConfig *PoolConfig `yaml:"pool_config"` // 连接池配置(可选)
}
MySQLConfig MySQL 配置
type ObservabilityConfig ¶
type ObservabilityConfig struct {
// SlowQueryThreshold 慢查询阈值,0 表示不记录慢查询
SlowQueryThreshold time.Duration `yaml:"slow_query_threshold"`
// LogSQL 是否记录完整的 SQL 语句(生产环境建议关闭)
LogSQL bool `yaml:"log_sql"`
// SampleRate 采样率(0.0-1.0),1.0 表示全部记录
SampleRate float64 `yaml:"sample_rate"`
}
ObservabilityConfig 可观测性配置
type PoolConfig ¶
type PoolConfig struct {
MaxOpenConns int `yaml:"max_open_conns"` // 最大打开连接数,0 表示无限制
MaxIdleConns int `yaml:"max_idle_conns"` // 最大空闲连接数
ConnMaxLifetime time.Duration `yaml:"conn_max_lifetime"` // 连接最大存活时间
ConnMaxIdleTime time.Duration `yaml:"conn_max_idle_time"` // 连接最大空闲时间
}
PoolConfig 数据库连接池配置(所有驱动通用)
type PostgreSQLConfig ¶
type PostgreSQLConfig struct {
DSN string `yaml:"dsn"` // PostgreSQL DSN,如: host=localhost port=5432 user=postgres password=
// password dbname=lite_demo sslmode=disable
PoolConfig *PoolConfig `yaml:"pool_config"` // 连接池配置(可选)
}
PostgreSQLConfig PostgreSQL 配置
func (*PostgreSQLConfig) Validate ¶
func (c *PostgreSQLConfig) Validate() error
Validate 验证 PostgreSQL 配置
type SQLiteConfig ¶
type SQLiteConfig struct {
DSN string `yaml:"dsn"` // SQLite DSN,如: file:./data.db?cache=shared&mode=rwc
PoolConfig *PoolConfig `yaml:"pool_config"` // 连接池配置(可选)
}
SQLiteConfig SQLite 配置