Spaces:
Build error
Build error
File size: 1,149 Bytes
3cb78c0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 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{})
}
} |