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{}) } }