Files
tp/main_dc/yalarba/api_es/cmd/main.go
T
valitovgaziz 032ce66865 modified: main_dc/yalarba/api_es/cmd/main.go
modified:   main_dc/yalarba/api_es/internal/handler/all_handlers.go
	modified:   main_dc/yalarba/api_es/internal/handler/user_handler.go
	new file:   main_dc/yalarba/api_es/internal/router/router.go
add rounter, logger router
2025-11-12 05:59:14 +05:00

53 lines
1.2 KiB
Go

package main
import (
"log"
"net/http"
"api_es/internal/config"
"api_es/internal/database"
"api_es/internal/router"
"api_es/pkg/logger"
"go.uber.org/zap"
"gorm.io/gorm"
)
var db *gorm.DB
func main() {
// Загрузка конфигурации
cfg := config.Load()
logger.Init(cfg.LogLevel, cfg.Environment)
zapLogger := logger.Get()
zapLogger.Info("Start api_es REST API on stack Golang (gorm, chi) and PostgresDB connect")
// Инициализация БД
db, err := database.NewPostgresConnection(cfg)
if err != nil {
zapLogger.Panic("Failed to connect to database:", zap.Error(err))
}
sqlDB, err := db.DB()
if err != nil {
zapLogger.Error("failed to get database instance", zap.Error(err))
}
if err := sqlDB.Ping(); err != nil {
zapLogger.Error("database ping failed", zap.Error(err))
}
zapLogger.Info("database ping successful")
zapLogger.Info("setup router")
r := router.SetupRouter(db, cfg)
// Запуск сервера
zapLogger.Info("Server starting on port %s", zap.String("AppPort", cfg.AppPort))
log.Printf("Server starting on port %s", cfg.AppPort)
if err := http.ListenAndServe(":"+cfg.AppPort, r); err != nil {
log.Fatal("Failed to start server:", err)
}
}