truck-company/cmd/api/main.go

56 lines
1.3 KiB
Go

package main
import (
"database/sql"
"fmt"
"log"
"net/http"
"os"
"truck-company/internal/handlers"
"truck-company/internal/repository"
"truck-company/internal/usecase"
"github.com/gorilla/mux"
_ "github.com/lib/pq"
)
func main() {
// Читаем переменные
dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
dbUser := os.Getenv("POSTGRES_USER")
dbPassword := os.Getenv("POSTGRES_PASSWORD")
dbName := os.Getenv("POSTGRES_DB")
sslMode := os.Getenv("DB_SSLMODE")
// Формируем строку подключения
dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s",
dbHost, dbPort, dbUser, dbPassword, dbName, sslMode)
db, err := sql.Open("postgres", dsn)
if err != nil {
log.Fatal("Ошибка подключения к БД:", err)
}
defer db.Close()
// Проверяем соединение
err = db.Ping()
if err != nil {
log.Fatal("БД не отвечает:", err)
}
log.Println("Подключение к PostgreSQL успешно!")
repo := repository.NewAppRepo(db)
usecase := usecase.NewUseCase(*repo)
r := mux.NewRouter()
h := handlers.NewTruckCompanyHandler(usecase)
h.RegisterRoutes(r)
// Запуск сервера
log.Println("Server running on :8080")
log.Fatal(http.ListenAndServe(":8080", r))
}