saw-go/dao/db.go

136 lines
2.7 KiB
Go
Raw Normal View History

package dao
import (
"StuAcaWorksAI/proto"
"fmt"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
2025-03-24 13:48:58 +08:00
"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)
}
2025-03-21 18:59:30 +08:00
err = db.AutoMigrate(&Logger{})
if err != nil {
2025-03-21 18:59:30 +08:00
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
}
2025-04-07 18:06:59 +08:00
err = db.AutoMigrate(&FileContent{})
if err != nil {
fmt.Println("file content table:", err)
return err
}
2025-04-08 15:58:29 +08:00
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
}
2025-03-24 13:48:58 +08:00
err = db.AutoMigrate(&FunctionModel{})
if err != nil {
log.Println("function model table:", err)
return err
}
2025-03-30 14:14:35 +08:00
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
}
2025-03-25 14:34:50 +08:00
2025-04-27 10:00:19 +08:00
err = db.AutoMigrate(&ThirdPartyUserInfo{})
if err != nil {
fmt.Println("third party user info table:", err)
return err
}
2025-03-25 14:34:50 +08:00
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()
}