qq_bot/sqlite3/gorm.go

45 lines
726 B
Go

package sqlite3
import (
"sync"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
var db *gorm.DB
var OnceInitGormDB sync.Once
func InitGormDB() {
var err error
db, err = gorm.Open(sqlite.Open("data.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
}
func GetGormDB() *gorm.DB {
if db == nil {
OnceInitGormDB.Do(InitGormDB)
}
return db
}
// AutoMigrate 使用GORM的自动迁移功能
func AutoMigrate(models ...interface{}) error {
return GetGormDB().AutoMigrate(models...)
}
// GetGormTx 获取GORM事务
func GetGormTx() *gorm.DB {
return GetGormDB().Begin()
}
// CloseDB 关闭数据库连接
func CloseDB() {
if sqlDB, err := GetGormDB().DB(); err == nil {
sqlDB.Close()
}
}