ed355ee60d
modified: main_dc/yalarba/api_es/.env modified: main_dc/yalarba/api_es/cmd/main.go modified: main_dc/yalarba/api_es/go.mod modified: main_dc/yalarba/api_es/go.sum new file: main_dc/yalarba/api_es/internal/config/config.go new file: main_dc/yalarba/api_es/internal/database/psql_db.go new file: main_dc/yalarba/api_es/pkg/logger/helpers.go new file: main_dc/yalarba/api_es/pkg/logger/interface.go new file: main_dc/yalarba/api_es/pkg/logger/logger.go new file: main_dc/yalarba/api_es/pkg/logger/route_logger.go add new User model for api_es add global zapLogger api_es add configs dotenv api_es sipmplify main api_es
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|