diff --git a/internal/app/app.go b/internal/app/app.go index 7e4ca7e..112ded4 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -11,20 +11,19 @@ import ( "context" "go.mongodb.org/mongo-driver/mongo" "go.uber.org/zap" - "time" ) func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error { logger.Info("Запуск приложения", zap.String("AppName", cfg.AppName)) - mdb, err := initialize.InitializeMongoDB(ctx, cfg) + mdb, err := initialize.MongoDB(ctx, cfg) if err != nil { logger.Error("Failed to initialize MongoDB", zap.Error(err)) return err } - rdb, err := initialize.InitializeRedis(ctx, cfg) - encrypt := initialize.InitializeEncrypt(cfg) + rdb, err := initialize.Redis(ctx, cfg) + encrypt := initialize.Encrypt(cfg) codewordRepo := repository.NewCodewordRepository(repository.Deps{Rdb: rdb, Mdb: mdb.Collection("codeword")}) userRepo := repository.NewUserRepository(repository.Deps{Rdb: nil, Mdb: mdb.Collection("users")}) recoveryEmailSender := initialize.RecoveryEmailSender(cfg, logger) @@ -68,7 +67,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error { <-ctx.Done() - if err := shutdownApp(server, mdb, logger); err != nil { + if err := shutdownApp(ctx, server, mdb, logger); err != nil { return err } logger.Info("The application has stopped") @@ -77,22 +76,19 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error { // TODO возможно стоит вынести в отдельные файлы или отказаться от разделения на отдельные методы -func shutdownApp(server *httpserver.Server, mdb *mongo.Database, logger *zap.Logger) error { - if err := shutdownHTTPServer(server, logger); err != nil { +func shutdownApp(ctx context.Context, server *httpserver.Server, mdb *mongo.Database, logger *zap.Logger) error { + if err := shutdownHTTPServer(ctx, server, logger); err != nil { return err } - if err := shutdownMongoDB(mdb, logger); err != nil { + if err := shutdownMongoDB(ctx, mdb, logger); err != nil { return err } return nil } -func shutdownHTTPServer(server *httpserver.Server, logger *zap.Logger) error { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - +func shutdownHTTPServer(ctx context.Context, server *httpserver.Server, logger *zap.Logger) error { if err := server.Shutdown(ctx); err != nil { logger.Error("Error stopping HTTP server", zap.Error(err)) return err @@ -100,10 +96,7 @@ func shutdownHTTPServer(server *httpserver.Server, logger *zap.Logger) error { return nil } -func shutdownMongoDB(mdb *mongo.Database, logger *zap.Logger) error { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - +func shutdownMongoDB(ctx context.Context, mdb *mongo.Database, logger *zap.Logger) error { if err := mdb.Client().Disconnect(ctx); err != nil { logger.Error("Error when closing MongoDB connection", zap.Error(err)) return err diff --git a/internal/initialize/encrypt.go b/internal/initialize/encrypt.go index abb49ed..366147d 100644 --- a/internal/initialize/encrypt.go +++ b/internal/initialize/encrypt.go @@ -4,7 +4,7 @@ import ( "codeword/internal/utils/encrypt" ) -func InitializeEncrypt(cfg Config) *encrypt.Encrypt { +func Encrypt(cfg Config) *encrypt.Encrypt { return encrypt.New(&encrypt.EncryptDeps{ PublicKey: cfg.PublicCurveKey, PrivateKey: cfg.PrivateCurveKey, diff --git a/internal/initialize/mongo.go b/internal/initialize/mongo.go index df49819..64fea74 100644 --- a/internal/initialize/mongo.go +++ b/internal/initialize/mongo.go @@ -7,7 +7,7 @@ import ( "time" ) -func InitializeMongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) { +func MongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) { dbConfig := &mdb.Configuration{ MongoHost: cfg.MongoHost, MongoPort: cfg.MongoPort, diff --git a/internal/initialize/redis.go b/internal/initialize/redis.go index bd42631..d8de002 100644 --- a/internal/initialize/redis.go +++ b/internal/initialize/redis.go @@ -5,7 +5,7 @@ import ( "github.com/go-redis/redis/v8" ) -func InitializeRedis(ctx context.Context, cfg Config) (*redis.Client, error) { +func Redis(ctx context.Context, cfg Config) (*redis.Client, error) { rdb := redis.NewClient(&redis.Options{ Addr: cfg.RedisAddr, Password: cfg.RedisPassword, diff --git a/internal/repository/codeword_repository.go b/internal/repository/codeword_repository.go index e7af8a8..75d38e1 100644 --- a/internal/repository/codeword_repository.go +++ b/internal/repository/codeword_repository.go @@ -81,5 +81,8 @@ func (r *codewordRepository) GetRecoveryRecord(ctx context.Context, key string) // пингует в монгу чтобы проверить подключение func (r *codewordRepository) Ping(ctx context.Context) error { - return r.mdb.Database().Client().Ping(ctx, readpref.Primary()) + if err := r.mdb.Database().Client().Ping(ctx, readpref.Primary()); err != nil { + return err + } + return nil } diff --git a/internal/server/http/http_server.go b/internal/server/http/http_server.go index 4b0808a..ca397ff 100644 --- a/internal/server/http/http_server.go +++ b/internal/server/http/http_server.go @@ -35,7 +35,11 @@ func NewServer(config ServerConfig) *Server { } func (s *Server) Start(addr string) error { - return s.app.Listen(addr) + if err := s.app.Listen(addr); err != nil { + s.Logger.Error("Failed to start server", zap.Error(err)) + return err + } + return nil } func (s *Server) Shutdown(ctx context.Context) error { diff --git a/internal/services/recovery_service.go b/internal/services/recovery_service.go index e3738f0..664d447 100644 --- a/internal/services/recovery_service.go +++ b/internal/services/recovery_service.go @@ -116,7 +116,7 @@ func (s *RecoveryService) GetRecoveryRecord(ctx context.Context, key string) (*m // сомнительный вариант но как я думаю верный, что false==err result, err := s.encrypt.VerifySignature(byteKey) - if err != nil || result == false { + if err != nil || !result { s.logger.Error("Failed to verify signature", zap.String("signature", key), zap.Error(err)) return nil, err } diff --git a/internal/worker/purge_worker/purge_worker.go b/internal/worker/purge_worker/purge_worker.go index 19c81eb..e621641 100644 --- a/internal/worker/purge_worker/purge_worker.go +++ b/internal/worker/purge_worker/purge_worker.go @@ -13,19 +13,19 @@ type Deps struct { Mongo *mongo.Collection } -type purgeWorker struct { +type PurgeWorker struct { logger *zap.Logger mongo *mongo.Collection } -func NewRecoveryWC(deps Deps) *purgeWorker { - return &purgeWorker{ +func NewRecoveryWC(deps Deps) *PurgeWorker { + return &PurgeWorker{ logger: deps.Logger, mongo: deps.Mongo, } } -func (wc *purgeWorker) Start(ctx context.Context) { +func (wc *PurgeWorker) Start(ctx context.Context) { ticker := time.NewTicker(1 * time.Hour) defer ticker.Stop() @@ -40,7 +40,7 @@ func (wc *purgeWorker) Start(ctx context.Context) { } } -func (wc *purgeWorker) processTasks(ctx context.Context) { +func (wc *PurgeWorker) processTasks(ctx context.Context) { wc.logger.Info("Checking cleaning records") oneHourAgo := time.Now().Add(-1 * time.Hour)