| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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
- }
|