Spaces:
Build error
Build error
| package database | |
| import ( | |
| "log" | |
| "os" | |
| "path/filepath" | |
| "tempmail-service/models" | |
| "time" | |
| "gorm.io/driver/sqlite" | |
| "gorm.io/gorm" | |
| "gorm.io/gorm/logger" | |
| ) | |
| var DB *gorm.DB | |
| func InitDB(dbPath string) { | |
| // Ensure directory exists | |
| dir := filepath.Dir(dbPath) | |
| if err := os.MkdirAll(dir, 0755); err != nil { | |
| log.Fatal("Failed to create database directory:", err) | |
| } | |
| var err error | |
| DB, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{ | |
| Logger: logger.Default.LogMode(logger.Silent), | |
| }) | |
| if err != nil { | |
| log.Fatal("Failed to connect to database:", err) | |
| } | |
| // Auto migrate | |
| err = DB.AutoMigrate(&models.Session{}, &models.CachedMessage{}) | |
| if err != nil { | |
| log.Fatal("Failed to migrate database:", err) | |
| } | |
| // Cleanup old sessions periodically | |
| go cleanupOldSessions() | |
| log.Println("Database initialized successfully") | |
| } | |
| func cleanupOldSessions() { | |
| ticker := time.NewTicker(1 * time.Hour) | |
| for range ticker.C { | |
| // Delete sessions older than 24 hours | |
| cutoff := time.Now().Add(-24 * time.Hour) | |
| DB.Where("created_at < ?", cutoff).Delete(&models.Session{}) | |
| DB.Where("created_at < ?", cutoff).Delete(&models.CachedMessage{}) | |
| } | |
| } |