package database import ( "fmt" "log" "github.com/celestia-trace/backend/config" "github.com/celestia-trace/backend/models" "gorm.io/driver/postgres" "gorm.io/gorm" ) var DB *gorm.DB // Init initializes the database connection and auto-migrates models func Init(cfg *config.Config) { dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=UTC", cfg.DBHost, cfg.DBUser, cfg.DBPassword, cfg.DBName, cfg.DBPort) db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { log.Fatalf("Failed to connect to database: %v", err) } // Auto-migrate models err = db.AutoMigrate( &models.User{}, &models.AuthSession{}, &models.BoundDevice{}, &models.CelestiaSession{}, &models.TimelineEvent{}, &models.MediaAsset{}, &models.SyncSetting{}, &models.ChunkedUpload{}, ) if err != nil { log.Fatalf("Failed to auto-migrate database: %v", err) } DB = db }