package storage import ( "go-desk/internal/storage/models" "os" "path/filepath" "time" "github.com/glebarez/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" ) var globalDB *gorm.DB func Init() (*gorm.DB, error) { if globalDB != nil { return globalDB, nil } homeDir, err := os.UserHomeDir() if err != nil { return nil, err } dataDir := filepath.Join(homeDir, ".go-desk") os.MkdirAll(dataDir, 0755) dbPath := filepath.Join(dataDir, "db-cli.db") db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{ Logger: logger.Default.LogMode(logger.Silent), }) if err != nil { return nil, err } sqlDB, _ := db.DB() sqlDB.SetMaxOpenConns(1) sqlDB.SetMaxIdleConns(1) sqlDB.SetConnMaxLifetime(time.Hour) if err := db.AutoMigrate( &models.DbConnection{}, &models.SqlTab{}, &models.SqlResultHistory{}, ); err != nil { return nil, err } globalDB = db return globalDB, nil } func GetDB() *gorm.DB { return globalDB }