- OAuth认证系统(Gitea + Lua扩展) - Git自动化操作(本地/SSH远程) - 实时进度WebSocket推送 - 现代化Tab界面UI - Cobra CLI命令行(init/version/serve) - 完整构建系统(Makefile + Taskfile) - UPX压缩支持(体积减少70%)
51 lines
929 B
Go
51 lines
929 B
Go
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))
|
|
}
|
|
}
|