package workers import ( "context" "go.uber.org/zap" "mailnotifier/internal/clients" "mailnotifier/internal/models" "mailnotifier/internal/repository" ) //todo тут будут заембенжены шаблоны type Welcomer struct { repo *repository.Repository mailClient *clients.MailClient logger *zap.Logger welcomeChan <-chan models.Message } type WelcomerDeps struct { Repo *repository.Repository MailClient *clients.MailClient Logger *zap.Logger WelcomeChan chan models.Message } func NewWelcomer(deps WelcomerDeps) *Welcomer { return &Welcomer{ repo: deps.Repo, mailClient: deps.MailClient, logger: deps.Logger, welcomeChan: deps.WelcomeChan, } } func (w *Welcomer) Start(ctx context.Context) { for { select { case msg := <-w.welcomeChan: w.welcome(ctx, msg) case <-ctx.Done(): return } } } func (w *Welcomer) welcome(ctx context.Context, msg models.Message) { err := w.mailClient.MailSender(clients.SenderDeps{ Subject: "registration", Email: msg.Email, TmplPath: "registration", // todo заменить на шаблон }) if err != nil { w.logger.Error("error sending message to mailbox registration:", zap.Error(err)) } msg.SendRegistration = true err = w.repo.Update(ctx, msg) if err != nil { w.logger.Error("error updating record for registration:", zap.Error(err)) } }