Files
tp/main_dc/yalarba/api_yal/cmd/main.go
T
valitovgaziz 06d3dbd8b7 modified: main_dc/yalarba/api_yal/cmd/main.go
modified:   main_dc/yalarba/api_yal/internal/router/router.go
set router
2026-02-25 12:34:32 +05:00

52 lines
2.1 KiB
Go

package main
import (
"log"
"net/http"
"api_yal/internal/config"
"api_yal/internal/database"
"api_yal/internal/logger"
"api_yal/internal/server"
"api_yal/internal/router"
"go.uber.org/zap"
)
func main() {
// Загрузка конфигурации приложения из файлов окружения или конфигурационных файлов
// Конфигурация включает параметры БД, уровень логирования, порт приложения и т.д.
cfg := config.Load()
// Инициализация логгера с указанным уровнем логирования и окружением (dev/prod)
// Логгер будет настроен соответствующим образом для заданного окружения
logger.Init(cfg.LogLevel, cfg.Environment)
// Получение инстанса логгера для использования во всем приложении
zapLogger := logger.Get()
// Логирование старта приложения с указанием используемого стека технологий
zapLogger.Info("Start api_yal REST API on stack Golang (gorm, chi) and PostgresDB connect")
// Инициализация подключения к базе данных PostgreSQL с использованием параметров из конфигурации
// Возвращается объект gorm.DB для работы с ORM
db, err := database.NewPostgresConnection(cfg)
if err != nil {
// Критическая ошибка подключения к БД - приложение не может работать без БД
zapLogger.Panic("Failed to connect to database:", zap.Error(err))
}
// setup routes
// Создаем маршрутизатор
r := router.SetupRouter(db, cfg)
// Создаем и запускаем сервер
srv := server.NewServer(":8787", r)
log.Printf("Server starting on port %s", ":8787")
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("Server failed to start: %v", err)
}
}