some refactor
This commit is contained in:
parent
9377a9fe35
commit
4c43a0d87b
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user