package workers import ( "context" "time" "tm/internal/notification" "tm/pkg/logger" ) // NotificationWorker promotes due scheduled notifications from pending to sent. type NotificationWorker struct { Repository notification.Repository Logger logger.Logger } // NewNotificationWorker creates a notification delivery worker. func NewNotificationWorker(repository notification.Repository, logger logger.Logger) *NotificationWorker { return &NotificationWorker{ Repository: repository, Logger: logger, } } // Run marks pending scheduled notifications as sent once their delivery time has passed. func (w *NotificationWorker) Run() { count, err := w.Repository.MarkDueScheduledAsSent(context.Background(), time.Now().Unix()) if err != nil { w.Logger.Error("Scheduled notification worker failed", map[string]interface{}{ "error": err.Error(), }) return } if count > 0 { w.Logger.Info("Scheduled notification worker completed", map[string]interface{}{ "count": count, }) } }