package main import ( "encoding/json" "log" "net/http" "api_es/internal/config" "api_es/internal/database" "api_es/pkg/logger" "github.com/go-chi/chi/v5" "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") r := chi.NewRouter() // Health check r.Get("/health", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]string{"status": "healthy"}) }) // Запуск сервера 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) } }