modified: serv_nginx/api_bb/cmd/main.go

modified:   serv_nginx/api_bb/go.mod
	modified:   serv_nginx/api_bb/go.sum
	modified:   serv_nginx/api_bb/internal/config/config.go
	modified:   serv_nginx/api_bb/pkg/database/database.go
change database to postgresql form sqlite
This commit is contained in:
2025-10-08 03:35:39 +05:00
parent abe5551619
commit 6dd5f64ddb
5 changed files with 96 additions and 9 deletions
+31 -6
View File
@@ -1,25 +1,50 @@
package database
import (
"fmt"
"log"
"time"
"go-rest-api/internal/models"
"gorm.io/driver/sqlite"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func InitDB(dsn string) (*gorm.DB, error) {
db, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{})
// Используем PostgreSQL драйвер
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to connect to database: %w", err)
}
// Получаем underlying sql.DB для настройки пула соединений
sqlDB, err := db.DB()
if err != nil {
return nil, fmt.Errorf("failed to get database instance: %w", err)
}
// Настраиваем пул соединений
sqlDB.SetMaxIdleConns(10)
sqlDB.SetMaxOpenConns(100)
sqlDB.SetConnMaxLifetime(time.Hour)
// Проверяем соединение
if err := sqlDB.Ping(); err != nil {
return nil, fmt.Errorf("database ping failed: %w", err)
}
log.Println("PostgreSQL connection established successfully")
// Auto migrate models
err = db.AutoMigrate(
&models.User{},
// Добавьте другие модели здесь по мере расширения
)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to auto-migrate models: %w", err)
}
log.Println("Database migration completed successfully")
return db, nil
}