package db import ( "cs-bridge/internal/config" "fmt" "os" "go.uber.org/zap" "gorm.io/gorm" "gorm.io/gorm/logger" ) var db *gorm.DB func init() { if _, err := os.Stat("./data"); os.IsNotExist(err) { _ = os.Mkdir("./data", os.ModePerm) } } func GetDB() *gorm.DB { if db == nil { panic("数据库未初始化,请先调用 db.InitDB()") } return db } func InitDB(cfg config.Database, log *zap.Logger) { go func() { if err := recover(); err != nil { panic(fmt.Sprintf("Init DB Error: %v", err)) } }() fmt.Println(cfg.SqliteDbPath) dialector := connectSQLite(cfg.SqliteDbPath) var err error db, err = gorm.Open(dialector, &gorm.Config{ Logger: NewZapGormLogger(log).LogMode(logger.Info), }) if err != nil { panic(err) } // 自动迁移数据库模型 if err := db.AutoMigrate(&WorkspaceToken{}); err != nil { panic(fmt.Sprintf("Failed to migrate WorkspaceToken model: %v", err)) } }