mirror of
https://github.com/yangjian102621/geekai.git
synced 2026-04-13 06:34:26 +08:00
94 lines
2.9 KiB
Go
94 lines
2.9 KiB
Go
package store
|
|
|
|
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// * Copyright 2023 The Geek-AI Authors. All rights reserved.
|
|
// * Use of this source code is governed by a Apache-2.0 license
|
|
// * that can be found in the LICENSE file.
|
|
// * @Author yangjian102621@163.com
|
|
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
import (
|
|
"fmt"
|
|
"geekai/core/types"
|
|
logger2 "geekai/logger"
|
|
"time"
|
|
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
"gorm.io/gorm/schema"
|
|
)
|
|
|
|
var log = logger2.GetLogger()
|
|
|
|
func NewGormConfig() *gorm.Config {
|
|
return &gorm.Config{
|
|
Logger: logger.Default.LogMode(logger.Warn),
|
|
NamingStrategy: schema.NamingStrategy{
|
|
TablePrefix: "geekai_", // 设置表前缀
|
|
SingularTable: false, // 使用单数表名形式
|
|
},
|
|
}
|
|
}
|
|
|
|
func NewMysql(config *gorm.Config, appConfig *types.AppConfig) (*gorm.DB, error) {
|
|
db, err := gorm.Open(mysql.Open(appConfig.MysqlDns), config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
sqlDB, err := db.DB()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
sqlDB.SetMaxIdleConns(32)
|
|
sqlDB.SetMaxOpenConns(512)
|
|
sqlDB.SetConnMaxLifetime(time.Hour)
|
|
|
|
log.Info("开始重命名数据表...")
|
|
|
|
// 重命名数据表
|
|
tableRenames := map[string]string{
|
|
"chatgpt_chat_roles": "geekai_chat_roles",
|
|
"chatgpt_admin_users": "geekai_admin_users",
|
|
"chatgpt_api_keys": "geekai_api_keys",
|
|
"chatgpt_app_types": "geekai_app_types",
|
|
"chatgpt_chat_history": "geekai_chat_history",
|
|
"chatgpt_chat_items": "geekai_chat_items",
|
|
"chatgpt_chat_models": "geekai_chat_models",
|
|
"chatgpt_users": "geekai_users",
|
|
"chatgpt_orders": "geekai_orders",
|
|
"chatgpt_products": "geekai_products",
|
|
"chatgpt_configs": "geekai_configs",
|
|
"chatgpt_sd_jobs": "geekai_sd_jobs",
|
|
"chatgpt_mj_jobs": "geekai_mj_jobs",
|
|
"chatgpt_suno_jobs": "geekai_suno_jobs",
|
|
"chatgpt_dall_jobs": "geekai_dall_jobs",
|
|
"chatgpt_video_jobs": "geekai_video_jobs",
|
|
"chatgpt_jimeng_jobs": "geekai_jimeng_jobs",
|
|
"chatgpt_files": "geekai_files",
|
|
"chatgpt_menus": "geekai_menus",
|
|
"chatgpt_functions": "geekai_functions",
|
|
"chatgpt_invite_codes": "geekai_invite_codes",
|
|
"chatgpt_invite_logs": "geekai_invite_logs",
|
|
"chatgpt_redeems": "geekai_redeems",
|
|
"chatgpt_power_logs": "geekai_power_logs",
|
|
"chatgpt_user_login_logs": "geekai_user_login_logs",
|
|
}
|
|
|
|
// 执行重命名操作
|
|
for oldTableName, newTableName := range tableRenames {
|
|
// 检查新表是否已存在
|
|
if !db.Migrator().HasTable(newTableName) {
|
|
err := db.Exec(fmt.Sprintf("ALTER TABLE %s RENAME TO %s", oldTableName, newTableName)).Error
|
|
if err != nil {
|
|
log.Errorf("重命名数据表 %s 到 %s 失败: %v", oldTableName, newTableName, err)
|
|
} else {
|
|
log.Infof("成功重命名数据表: %s -> %s", oldTableName, newTableName)
|
|
}
|
|
}
|
|
}
|
|
return db, nil
|
|
}
|