db

package
v0.3.5 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2025 License: Apache-2.0 Imports: 7 Imported by: 0

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

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

func QuickMigrate(db *gorm.DB, models ...interface{}) error

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) GetDB added in v0.1.7

func (h *GormHandler) GetDB() *gorm.DB

DB 返回底层 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

func MustNewGormHandler(db *gorm.DB) Handler

MustNewGormHandler 创建 GORM 处理器(panic 版本) 仅在确定 db 不为 nil 时使用,通常用于初始化阶段

func NewGormHandler

func NewGormHandler(db *gorm.DB) (Handler, error)

NewGormHandler 创建 GORM 处理器 返回 Handler 接口和可能的错误

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

func (m *Migrator) AddComments() error

AddComments 添加所有表注释

func (*Migrator) AutoMigrate added in v0.3.4

func (m *Migrator) AutoMigrate() error

AutoMigrate 执行完整的自动迁移(表结构 + 索引 + 注释)

func (*Migrator) CheckTablesExist added in v0.3.4

func (m *Migrator) CheckTablesExist(tables ...string) map[string]bool

CheckTablesExist 检查表是否存在

func (*Migrator) CheckTablesExistWithModels added in v0.3.4

func (m *Migrator) CheckTablesExistWithModels(models ...interface{}) map[string]bool

CheckTablesExistWithModels 根据模型检查表是否存在

func (*Migrator) CreateIndexes added in v0.3.4

func (m *Migrator) CreateIndexes() error

CreateIndexes 创建所有定义的索引

func (*Migrator) DropTables added in v0.3.4

func (m *Migrator) DropTables(tables ...string) error

DropTables 删除指定的表(危险操作)

func (*Migrator) DropTablesWithModels added in v0.3.4

func (m *Migrator) DropTablesWithModels(models ...interface{}) error

DropTablesWithModels 根据模型删除表(危险操作) 自动从模型中获取表名,支持 TableName() 方法

func (*Migrator) GetTableName added in v0.3.4

func (m *Migrator) GetTableName(model interface{}) string

GetTableName 获取模型对应的表名

func (*Migrator) HasTable added in v0.3.4

func (m *Migrator) HasTable(table string) bool

HasTable 检查单个表是否存在

func (*Migrator) HasTableWithModel added in v0.3.4

func (m *Migrator) HasTableWithModel(model interface{}) bool

HasTableWithModel 根据模型检查表是否存在

func (*Migrator) MigrateModels added in v0.3.4

func (m *Migrator) MigrateModels() error

MigrateModels 仅迁移模型表结构

func (*Migrator) SyncColumnComments added in v0.3.4

func (m *Migrator) SyncColumnComments(models ...interface{}) error

SyncColumnComments 同步模型字段注释到数据库 检查所有字段的注释是否与 Model 中定义的一致,不一致则更新

func (*Migrator) SyncColumnCommentsWithModels added in v0.3.4

func (m *Migrator) SyncColumnCommentsWithModels() error

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

type TableComment struct {
	Table   string // 表名
	Comment string // 注释内容
}

TableComment 表注释定义

Jump to

Keyboard shortcuts

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