delete ald api on golang, moove file on yalarba project into one

directories
This commit is contained in:
2025-10-04 23:07:40 +05:00
parent ade401699c
commit 26f8a2d0b5
330 changed files with 4 additions and 837 deletions
@@ -0,0 +1,52 @@
package database
import (
"fmt"
"log"
"serv_golang_rest_api/internal/config"
"serv_golang_rest_api/internal/models"
"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 {
// Сначала добавляем колонку как NULLABLE
if err := db.Exec(`ALTER TABLE users ADD COLUMN IF NOT EXISTS password VARCHAR(255)`).Error; err != nil {
return err
}
// Затем обновляем существующие записи (если нужно установить дефолтное значение)
if err := db.Exec(`UPDATE users SET password = '' WHERE password IS NULL`).Error; err != nil {
return err
}
// И только потом меняем на NOT NULL
if err := db.Exec(`ALTER TABLE users ALTER COLUMN password SET NOT NULL`).Error; err != nil {
return err
}
// Или используйте автоматические миграции GORM
return db.AutoMigrate(
&models.User{},
// другие модели...
)
}