Files
hldrCenter/server/init/database/cache/InitCache.go

60 lines
1.0 KiB
Go
Raw Normal View History

2025-11-01 19:37:10 +08:00
package cache
2025-11-02 00:59:47 +08:00
import (
"database/sql"
"fmt"
"os"
"path/filepath"
"sync"
"time"
2025-11-04 23:00:01 +08:00
_ "modernc.org/sqlite"
2025-11-02 00:59:47 +08:00
)
var (
2025-11-03 17:23:03 +08:00
GlobalDB *sql.DB
2025-11-04 23:00:01 +08:00
once sync.Once
2025-11-02 00:59:47 +08:00
)
2025-11-01 19:37:10 +08:00
func InitCache() {
2025-11-02 00:59:47 +08:00
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 {
2025-11-04 23:00:01 +08:00
_ = db.Close()
2025-11-02 00:59:47 +08:00
panic(fmt.Sprintf("验证 SQLite 连接失败:%v", err))
}
2025-11-04 23:00:01 +08:00
db.SetMaxOpenConns(1)
db.SetMaxIdleConns(1)
db.SetConnMaxLifetime(0)
db.SetConnMaxIdleTime(30 * time.Minute)
2025-11-02 00:59:47 +08:00
2025-11-03 17:23:03 +08:00
GlobalDB = db
2025-11-02 00:59:47 +08:00
fmt.Printf("SQLite 数据库初始化成功,文件路径:%s\n", dbPath)
})
}
func GetCacheDB() *sql.DB {
2025-11-03 17:23:03 +08:00
if GlobalDB == nil {
2025-11-02 00:59:47 +08:00
panic("数据库未初始化,请先调用 cache.InitCache()")
}
2025-11-03 17:23:03 +08:00
return GlobalDB
2025-11-02 00:59:47 +08:00
}
2025-11-01 19:37:10 +08:00
2025-11-02 00:59:47 +08:00
func CloseCache() error {
2025-11-03 17:23:03 +08:00
if GlobalDB != nil {
return GlobalDB.Close()
2025-11-02 00:59:47 +08:00
}
return nil
2025-11-01 19:37:10 +08:00
}