Documentation
¶
Overview ¶
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-11 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-23 13:05:48 * @FilePath: \go-sqlbuilder\db\handler.go * @Description: 数据库处理器 - Handler 接口和 GORM 实现 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-30 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-30 09:01:19 * @FilePath: \go-sqlbuilder\db\migrator.go * @Description: 通用数据库迁移器 - 支持自动迁移、索引创建、表注释 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
Index ¶
- func QuickAutoMigrate(db *gorm.DB, config *MigratorConfig) error
- func QuickMigrate(db *gorm.DB, models ...interface{}) error
- type ColumnComment
- type GormHandler
- type Handler
- type IndexDefinition
- type Migrator
- func (m *Migrator) AddComments() error
- func (m *Migrator) AutoMigrate() error
- func (m *Migrator) CheckTablesExist(tables ...string) map[string]bool
- func (m *Migrator) CheckTablesExistWithModels(models ...interface{}) map[string]bool
- func (m *Migrator) CreateIndexes() error
- func (m *Migrator) DropTables(tables ...string) error
- func (m *Migrator) DropTablesWithModels(models ...interface{}) error
- func (m *Migrator) GetTableName(model interface{}) string
- func (m *Migrator) HasTable(table string) bool
- func (m *Migrator) HasTableWithModel(model interface{}) bool
- func (m *Migrator) MigrateModels() error
- func (m *Migrator) SyncColumnComments(models ...interface{}) error
- func (m *Migrator) SyncColumnCommentsWithModels() error
- type MigratorConfig
- type TableComment
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func QuickAutoMigrate ¶ added in v0.3.4
func QuickAutoMigrate(db *gorm.DB, config *MigratorConfig) error
QuickAutoMigrate 快速完整迁移
func QuickMigrate ¶ added in v0.3.4
QuickMigrate 快速迁移(仅模型,无索引和注释)
Types ¶
type ColumnComment ¶ added in v0.3.4
type ColumnComment struct {
Table string // 表名
Column string // 列名
Comment string // 注释内容
Type string // 列类型(MySQL 需要)
}
ColumnComment 列注释定义
type GormHandler ¶
type GormHandler struct {
// contains filtered or unexported fields
}
GormHandler 标准 GORM 处理器实现
func (*GormHandler) IsConnected ¶ added in v0.1.7
func (h *GormHandler) IsConnected() bool
IsConnected 检查数据库连接是否有效
type Handler ¶
type Handler interface {
// GetDB 返回 GORM 数据库实例
GetDB() *gorm.DB
// IsConnected 检查数据库连接是否有效
IsConnected() bool
}
Handler 数据库处理器接口 所有 Repository 都基于这个接口工作,提供统一的数据库访问抽象
func MustNewGormHandler ¶ added in v0.1.7
MustNewGormHandler 创建 GORM 处理器(panic 版本) 仅在确定 db 不为 nil 时使用,通常用于初始化阶段
type IndexDefinition ¶ added in v0.3.4
type IndexDefinition struct {
Table string // 表名
Name string // 索引名(可选,为空时自动生成)
Columns string // 列定义(如 "(col1, col2)" 或 "col1 DESC")
Unique bool // 是否唯一索引
// contains filtered or unexported fields
}
IndexDefinition 索引定义
func NewIndex ¶ added in v0.3.4
func NewIndex(table string, columns ...string) IndexDefinition
NewIndex 创建普通索引定义(自动生成索引名) 示例: NewIndex("users", "email") => idx_users_email 示例: NewIndex("users", "user_id", "status") => idx_users_user_id_status
func NewIndexDesc ¶ added in v0.3.4
func NewIndexDesc(table string, columns ...string) IndexDefinition
NewIndexDesc 创建带降序的索引定义 示例: NewIndexDesc("messages", "created_at") => INDEX idx_messages_created_at ON messages (created_at DESC)
func NewIndexWithName ¶ added in v0.3.4
func NewIndexWithName(table, name, columns string, unique bool) IndexDefinition
NewIndexWithName 创建带自定义名称的索引定义
func NewUniqueIndex ¶ added in v0.3.4
func NewUniqueIndex(table string, columns ...string) IndexDefinition
NewUniqueIndex 创建唯一索引定义(自动生成索引名) 示例: NewUniqueIndex("users", "email") => idx_users_email_unique
func (*IndexDefinition) GenerateIndexName ¶ added in v0.3.4
func (idx *IndexDefinition) GenerateIndexName() string
GenerateIndexName 根据命名规范自动生成索引名 规范:idx_{表名}_{列名} 或 idx_{表名}_{列1}_{列2}_unique
type Migrator ¶ added in v0.3.4
type Migrator struct {
// contains filtered or unexported fields
}
Migrator 数据库迁移器
func NewMigrator ¶ added in v0.3.4
func NewMigrator(db *gorm.DB, config *MigratorConfig) *Migrator
NewMigrator 创建迁移器
func (*Migrator) AddComments ¶ added in v0.3.4
AddComments 添加所有表注释
func (*Migrator) AutoMigrate ¶ added in v0.3.4
AutoMigrate 执行完整的自动迁移(表结构 + 索引 + 注释)
func (*Migrator) CheckTablesExist ¶ added in v0.3.4
CheckTablesExist 检查表是否存在
func (*Migrator) CheckTablesExistWithModels ¶ added in v0.3.4
CheckTablesExistWithModels 根据模型检查表是否存在
func (*Migrator) CreateIndexes ¶ added in v0.3.4
CreateIndexes 创建所有定义的索引
func (*Migrator) DropTables ¶ added in v0.3.4
DropTables 删除指定的表(危险操作)
func (*Migrator) DropTablesWithModels ¶ added in v0.3.4
DropTablesWithModels 根据模型删除表(危险操作) 自动从模型中获取表名,支持 TableName() 方法
func (*Migrator) GetTableName ¶ added in v0.3.4
GetTableName 获取模型对应的表名
func (*Migrator) HasTableWithModel ¶ added in v0.3.4
HasTableWithModel 根据模型检查表是否存在
func (*Migrator) MigrateModels ¶ added in v0.3.4
MigrateModels 仅迁移模型表结构
func (*Migrator) SyncColumnComments ¶ added in v0.3.4
SyncColumnComments 同步模型字段注释到数据库 检查所有字段的注释是否与 Model 中定义的一致,不一致则更新
func (*Migrator) SyncColumnCommentsWithModels ¶ added in v0.3.4
SyncColumnCommentsWithModels 同步配置中所有模型的字段注释
type MigratorConfig ¶ added in v0.3.4
type MigratorConfig struct {
// Models 需要迁移的模型列表
Models []interface{}
// Indexes 需要创建的索引列表
Indexes []IndexDefinition
// Comments 表注释列表
Comments []TableComment
// Logger 日志记录器(可选,默认使用 go-logger 创建新实例)
Logger logger.ILogger
// SkipIndexOnError 索引创建失败时是否跳过(默认 true)
SkipIndexOnError bool
// SkipCommentOnError 注释添加失败时是否跳过(默认 true)
SkipCommentOnError bool
}
MigratorConfig 迁移器配置
type TableComment ¶ added in v0.3.4
TableComment 表注释定义