fix: error handling, defer cleanup, graceful shutdown, golangci-lint setup

This commit is contained in:
2026-04-18 17:32:34 +03:00
parent 44cb3c6576
commit ebb8cded41
16 changed files with 174 additions and 47 deletions

View File

@@ -2,7 +2,9 @@ package main
import (
"context"
"errors"
"log/slog"
"net/http"
"os"
"os/signal"
"syscall"
@@ -54,7 +56,11 @@ func main() {
slog.ErrorContext(ctx, "Ошибка подключения к redis", slog.String("error", err.Error()))
os.Exit(1)
}
defer redis.Close()
defer func() {
if err := redis.Close(); err != nil {
slog.Warn("redis close error", slog.String("error", err.Error()))
}
}()
if err := database.RunMigrations(ctx, cfg.DatabaseURL()); err != nil {
slog.ErrorContext(ctx, "Ошибка миграций", slog.String("error", err.Error()))
@@ -78,5 +84,9 @@ func main() {
}
cancel()
if err := <-serverErr; err != nil && !errors.Is(err, http.ErrServerClosed) {
slog.Error("Ошибка при остановке сервера", "error", err.Error())
}
slog.Info("Приложение остановлено")
}