Files

40 lines
935 B
Go

package database
import (
"fmt"
"log"
"github.com/toyffee/party-mix/internal/config"
"github.com/toyffee/party-mix/internal/models"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
func Connect(cfg *config.Config) *gorm.DB {
dsn := fmt.Sprintf(
"host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=UTC",
cfg.DBHost, cfg.DBUser, cfg.DBPass, cfg.DBName, cfg.DBPort,
)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Warn),
})
if err != nil {
log.Fatalf("database connection failed: %v", err)
}
if err := db.AutoMigrate(
&models.Party{},
&models.Participant{},
&models.Track{},
&models.HistoryItem{},
&models.User{},
&models.Playlist{},
&models.PlaylistTrack{},
&models.UserVersion{},
); err != nil {
log.Fatalf("database migration failed: %v", err)
}
log.Println("Database connected and migrated")
return db
}