45 lines
726 B
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()
|
|
}
|
|
}
|