136 lines
2.8 KiB
Go
136 lines
2.8 KiB
Go
package dao
|
||
|
||
import (
|
||
"StuAcaWorksAI/proto"
|
||
"fmt"
|
||
"gorm.io/driver/mysql"
|
||
"gorm.io/driver/postgres"
|
||
"gorm.io/gorm"
|
||
"gorm.io/gorm/logger"
|
||
"log"
|
||
"os"
|
||
"time"
|
||
)
|
||
|
||
var DB *gorm.DB
|
||
|
||
func Init() error {
|
||
var db *gorm.DB
|
||
var err error
|
||
var dsn string
|
||
logger := logger.New(
|
||
log.New(os.Stdout, "\r\n", log.LstdFlags), // 日志输出到标准输出
|
||
logger.Config{
|
||
SlowThreshold: time.Millisecond * time.Duration(proto.Config.SlowQueryThreshold), // 慢查询阈值设置
|
||
LogLevel: logger.Info, // 日志级别设置为 Info,记录慢查询信息
|
||
Colorful: true, // 启用日志颜色显示
|
||
},
|
||
)
|
||
if proto.Config.DB == 0 {
|
||
dsn = proto.Config.MYSQL_DSN
|
||
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
|
||
Logger: logger,
|
||
})
|
||
} else if proto.Config.DB == 1 {
|
||
dsn = proto.Config.PG_DSN
|
||
db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
|
||
Logger: logger,
|
||
})
|
||
}
|
||
|
||
if err != nil {
|
||
panic("failed to connect database")
|
||
return err
|
||
}
|
||
err = db.AutoMigrate(&User{})
|
||
if err != nil {
|
||
fmt.Println("user table:", err)
|
||
return err
|
||
} // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表
|
||
err = db.AutoMigrate(&File{})
|
||
if err != nil {
|
||
fmt.Println("file table:", err)
|
||
}
|
||
|
||
err = db.AutoMigrate(&Logger{})
|
||
if err != nil {
|
||
fmt.Println("logger table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&ConfigFile{})
|
||
if err != nil {
|
||
fmt.Println("config file table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&FileAuth{})
|
||
if err != nil {
|
||
fmt.Println("file auth table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&FileContent{})
|
||
if err != nil {
|
||
fmt.Println("file content table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&KnowledgeBase{})
|
||
if err != nil {
|
||
fmt.Println("knowledge base table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&Model{})
|
||
if err != nil {
|
||
fmt.Println("model table:", err)
|
||
return err
|
||
}
|
||
err = db.AutoMigrate(&FunctionModel{})
|
||
if err != nil {
|
||
log.Println("function model table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&ModelToken{})
|
||
if err != nil {
|
||
fmt.Println("model token table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&Session{})
|
||
if err != nil {
|
||
fmt.Println("session table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&Message{})
|
||
if err != nil {
|
||
fmt.Println("message table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&ThirdPartyUserInfo{})
|
||
if err != nil {
|
||
fmt.Println("third party user info table:", err)
|
||
return err
|
||
}
|
||
|
||
err = db.AutoMigrate(&AIStreamMsg{})
|
||
if err != nil {
|
||
fmt.Println("ai stream message table:", err)
|
||
return err
|
||
}
|
||
DB = db
|
||
return err
|
||
}
|
||
|
||
func Close() {
|
||
sqlDB, err := DB.DB()
|
||
if err != nil {
|
||
panic("failed to connect database")
|
||
}
|
||
sqlDB.Close()
|
||
}
|