new file: .env

modified:   Dockerfile
	new file:   cmd/api/main.go
	modified:   docker-compose.yaml
	modified:   go.mod
	modified:   go.sum
	new file:   internal/config/config.go
	new file:   internal/handler/middleware.go
	new file:   internal/handler/user_handler.go
	new file:   internal/model/user.go
	new file:   internal/repository/user_repository.go
	new file:   internal/server/server.go
	new file:   internal/service/user_service.go
	new file:   main
	deleted:    main.go
	new file:   migrations/001_create_users.sql
	new file:   pkg/database/postgres.go
	deleted:    src/models/user.go
add files from deepseek for rest api server on golang gorm and chi
server router
This commit is contained in:
2025-09-27 04:44:46 +05:00
parent 12c855cacc
commit 727c94d0a9
18 changed files with 508 additions and 98 deletions
@@ -0,0 +1,45 @@
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
}