package database import ( "fmt" "log" "serv_golang_rest_api/internal/config" "serv_golang_rest_api/internal/model" "gorm.io/driver/postgres" "gorm.io/gorm" ) func NewPostgresConnection(cfg *config.Config) (*gorm.DB, error) { 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 { return nil, fmt.Errorf("failed to connect to database: %w", err) } // Автомиграция if err := autoMigrate(db); err != nil { return nil, err } log.Println("Successfully connected to database") return db, nil } func autoMigrate(db *gorm.DB) error { models := []interface{}{ &model.User{}, // Добавьте другие модели здесь } for _, m := range models { if err := db.AutoMigrate(m); err != nil { return fmt.Errorf("failed to migrate model: %w", err) } } log.Println("Database migration completed") return nil }