database.go 752 B

1234567891011121314151617181920212223242526272829303132
  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 the User model
  20. err = db.AutoMigrate(&models.User{})
  21. if err != nil {
  22. log.Fatalf("Failed to auto-migrate database: %v", err)
  23. }
  24. DB = db
  25. }