sarveshpatel commited on
Commit
3cb78c0
·
verified ·
1 Parent(s): 979ab54

Create database/database.go

Browse files
Files changed (1) hide show
  1. database/database.go +52 -0
database/database.go ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package database
2
+
3
+ import (
4
+ "log"
5
+ "os"
6
+ "path/filepath"
7
+ "tempmail-service/models"
8
+ "time"
9
+
10
+ "gorm.io/driver/sqlite"
11
+ "gorm.io/gorm"
12
+ "gorm.io/gorm/logger"
13
+ )
14
+
15
+ var DB *gorm.DB
16
+
17
+ func InitDB(dbPath string) {
18
+ // Ensure directory exists
19
+ dir := filepath.Dir(dbPath)
20
+ if err := os.MkdirAll(dir, 0755); err != nil {
21
+ log.Fatal("Failed to create database directory:", err)
22
+ }
23
+
24
+ var err error
25
+ DB, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{
26
+ Logger: logger.Default.LogMode(logger.Silent),
27
+ })
28
+ if err != nil {
29
+ log.Fatal("Failed to connect to database:", err)
30
+ }
31
+
32
+ // Auto migrate
33
+ err = DB.AutoMigrate(&models.Session{}, &models.CachedMessage{})
34
+ if err != nil {
35
+ log.Fatal("Failed to migrate database:", err)
36
+ }
37
+
38
+ // Cleanup old sessions periodically
39
+ go cleanupOldSessions()
40
+
41
+ log.Println("Database initialized successfully")
42
+ }
43
+
44
+ func cleanupOldSessions() {
45
+ ticker := time.NewTicker(1 * time.Hour)
46
+ for range ticker.C {
47
+ // Delete sessions older than 24 hours
48
+ cutoff := time.Now().Add(-24 * time.Hour)
49
+ DB.Where("created_at < ?", cutoff).Delete(&models.Session{})
50
+ DB.Where("created_at < ?", cutoff).Delete(&models.CachedMessage{})
51
+ }
52
+ }