database.go 932 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package database
  2. import (
  3. "fmt"
  4. "log"
  5. "github.com/celestia-trace/backend/config"
  6. "github.com/celestia-trace/backend/models"
  7. "gorm.io/driver/postgres"
  8. "gorm.io/gorm"
  9. )
  10. var DB *gorm.DB
  11. // Init initializes the database connection and auto-migrates models
  12. func Init(cfg *config.Config) {
  13. dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=UTC",
  14. cfg.DBHost, cfg.DBUser, cfg.DBPassword, cfg.DBName, cfg.DBPort)
  15. db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
  16. if err != nil {
  17. log.Fatalf("Failed to connect to database: %v", err)
  18. }
  19. // Auto-migrate models
  20. err = db.AutoMigrate(
  21. &models.User{},
  22. &models.AuthSession{},
  23. &models.BoundDevice{},
  24. &models.CelestiaSession{},
  25. &models.TimelineEvent{},
  26. &models.MediaAsset{},
  27. &models.SyncSetting{},
  28. &models.ChunkedUpload{},
  29. )
  30. if err != nil {
  31. log.Fatalf("Failed to auto-migrate database: %v", err)
  32. }
  33. DB = db
  34. }