111 lines
2.5 KiB
Go
111 lines
2.5 KiB
Go
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)
|
||
InitPgSQLExtensions()
|
||
|
||
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)
|
||
}
|
||
|
||
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")
|
||
}
|