| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package initialize
- import (
- "fmt"
- "os"
- "path/filepath"
- "github.com/glebarez/sqlite"
- "gorm.io/gorm"
- "server/config"
- "server/global"
- "server/initialize/internal"
- )
- // GormSqlite 初始化Sqlite数据库
- func GormSqlite() *gorm.DB {
- s := global.GVA_CONFIG.Sqlite
- if s.Dbname == "" {
- return nil
- }
- // Resolve path: empty = %APPDATA%/smart-parking/
- if s.Path == "" {
- if appData := os.Getenv("APPDATA"); appData != "" {
- s.Path = appData
- } else {
- // Fallback: exe directory
- if exePath, err := os.Executable(); err == nil {
- s.Path = filepath.Dir(exePath)
- }
- }
- s.Path = filepath.Join(s.Path, "smart-parking")
- }
- // Ensure directory exists
- if err := os.MkdirAll(s.Path, 0755); err != nil {
- panic(fmt.Errorf("failed to create SQLite db directory %s: %w", s.Path, err))
- }
- dsn := filepath.Join(s.Path, s.Dbname+".db")
- if db, err := gorm.Open(sqlite.Open(dsn), internal.Gorm.Config(s.Prefix, s.Singular)); err != nil {
- panic(err)
- } else {
- sqlDB, _ := db.DB()
- sqlDB.SetMaxIdleConns(s.MaxIdleConns)
- sqlDB.SetMaxOpenConns(s.MaxOpenConns)
- return db
- }
- }
- // GormSqliteByConfig 初始化Sqlite数据库用过传入配置
- func GormSqliteByConfig(s config.Sqlite) *gorm.DB {
- if s.Dbname == "" {
- return nil
- }
- if db, err := gorm.Open(sqlite.Open(s.Dsn()), internal.Gorm.Config(s.Prefix, s.Singular)); err != nil {
- panic(err)
- } else {
- sqlDB, _ := db.DB()
- sqlDB.SetMaxIdleConns(s.MaxIdleConns)
- sqlDB.SetMaxOpenConns(s.MaxOpenConns)
- return db
- }
- }
|