Files
hldrCenter/server/init/database/cache/InitCache.go
JACKYMYPERSON 76b863b99d 修改
2025-11-04 23:00:01 +08:00

60 lines
1.0 KiB
Go

package cache
import (
"database/sql"
"fmt"
"os"
"path/filepath"
"sync"
"time"
_ "modernc.org/sqlite"
)
var (
GlobalDB *sql.DB
once sync.Once
)
func InitCache() {
once.Do(func() {
dbPath := "./database/local/user.db"
if err := os.MkdirAll(filepath.Dir(dbPath), 0755); err != nil {
panic(fmt.Sprintf("创建数据库目录失败:%v", err))
}
db, err := sql.Open("sqlite", dbPath)
if err != nil {
panic(fmt.Sprintf("打开 SQLite 数据库失败:%v", err))
}
if err := db.Ping(); err != nil {
_ = db.Close()
panic(fmt.Sprintf("验证 SQLite 连接失败:%v", err))
}
db.SetMaxOpenConns(1)
db.SetMaxIdleConns(1)
db.SetConnMaxLifetime(0)
db.SetConnMaxIdleTime(30 * time.Minute)
GlobalDB = db
fmt.Printf("SQLite 数据库初始化成功,文件路径:%s\n", dbPath)
})
}
func GetCacheDB() *sql.DB {
if GlobalDB == nil {
panic("数据库未初始化,请先调用 cache.InitCache()")
}
return GlobalDB
}
func CloseCache() error {
if GlobalDB != nil {
return GlobalDB.Close()
}
return nil
}