package initialize import ( "os" "git.echol.cn/loser/st/server/global" "git.echol.cn/loser/st/server/model/app" "git.echol.cn/loser/st/server/model/example" "git.echol.cn/loser/st/server/model/system" "go.uber.org/zap" "gorm.io/gorm" ) func Gorm() *gorm.DB { switch global.GVA_CONFIG.System.DbType { case "mysql": global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mysql.Dbname return GormMysql() case "pgsql": global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Pgsql.Dbname return GormPgSql() case "oracle": global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Oracle.Dbname return GormOracle() case "mssql": global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mssql.Dbname return GormMssql() case "sqlite": global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Sqlite.Dbname return GormSqlite() default: global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mysql.Dbname return GormMysql() } } func RegisterTables() { if global.GVA_CONFIG.System.DisableAutoMigrate { global.GVA_LOG.Info("auto-migrate is disabled, skipping table registration") return } // 初始化 PostgreSQL 扩展(仅创建 pgvector 扩展) InitPgSQLExtension() db := global.GVA_DB err := db.AutoMigrate( // System tables (管理后台表 - 不修改) system.SysApi{}, system.SysIgnoreApi{}, system.SysUser{}, system.SysBaseMenu{}, system.JwtBlacklist{}, system.SysAuthority{}, system.SysDictionary{}, system.SysOperationRecord{}, system.SysAutoCodeHistory{}, system.SysDictionaryDetail{}, system.SysBaseMenuParameter{}, system.SysBaseMenuBtn{}, system.SysAuthorityBtn{}, system.SysAutoCodePackage{}, system.SysExportTemplate{}, system.Condition{}, system.JoinTemplate{}, system.SysParams{}, system.SysVersion{}, system.SysError{}, system.SysApiToken{}, system.SysLoginLog{}, // Example tables example.ExaFile{}, example.ExaCustomer{}, example.ExaFileChunk{}, example.ExaFileUploadAndDownload{}, example.ExaAttachmentCategory{}, // App tables (前台应用表 - 新增) app.AppUser{}, app.AppUserSession{}, app.AICharacter{}, app.AppUserFavoriteCharacter{}, app.AIChat{}, app.AIChatMember{}, app.AIMessage{}, app.AIMessageSwipe{}, app.AIMemoryVector{}, app.AIProvider{}, app.AIModel{}, app.AIFile{}, app.AIPreset{}, app.AIWorldInfo{}, app.AIUsageStat{}, ) if err != nil { global.GVA_LOG.Error("register table failed", zap.Error(err)) os.Exit(0) } // 创建向量索引(必须在 AutoMigrate 之后) CreateVectorIndexes() err = bizModel() if err != nil { global.GVA_LOG.Error("register biz_table failed", zap.Error(err)) os.Exit(0) } global.GVA_LOG.Info("register table success") }