fix: error handling, defer cleanup, graceful shutdown, golangci-lint setup
This commit is contained in:
12
cmd/main.go
12
cmd/main.go
@@ -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("Приложение остановлено")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user