package workers import ( "context" "fmt" "go.uber.org/zap" "mailnotifier/internal/clients" "mailnotifier/internal/repository" "time" ) //todo тут будут заембенжены шаблоны type Notifyer struct { repo *repository.Repository mailClient *clients.MailClient logger *zap.Logger } type NotifyerDeps struct { Repo *repository.Repository MailClient *clients.MailClient Logger *zap.Logger } func NewNotifyer(deps NotifyerDeps) *Notifyer { return &Notifyer{ repo: deps.Repo, mailClient: deps.MailClient, logger: deps.Logger, } } func (n *Notifyer) Start(ctx context.Context) { tiker := time.NewTicker(30 * time.Minute) defer tiker.Stop() for { select { case <-tiker.C: n.notify(ctx) case <-ctx.Done(): return } } } func (n *Notifyer) notify(ctx context.Context) { records, err := n.repo.GetMany(ctx) if err != nil { n.logger.Error("error getting records from mongo", zap.Error(err)) } for _, record := range records { fmt.Println(record) } }