saw-go/dao/db.go

136 lines
2.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 * 500, // 慢查询阈值设置为 500ms
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()
}