61 lines
1.5 KiB
Go
61 lines
1.5 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() {
|
|
// Загружаем переменные из .env
|
|
// err := godotenv.Load()
|
|
// if err != nil {
|
|
// log.Fatal("Ошибка загрузки .env файла")
|
|
// }
|
|
|
|
// Читаем переменные
|
|
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, dsn)
|
|
}
|
|
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))
|
|
}
|