backend-service/internal/services/job_manager_service.go

55 lines
1.5 KiB
Go
Raw Normal View History

package services
import (
"time"
"attune-heart-therapy/internal/jobs"
"attune-heart-therapy/internal/repositories"
)
// jobManagerService implements the JobManagerService interface
type jobManagerService struct {
manager *jobs.Manager
}
// NewJobManagerService creates a new job manager service
func NewJobManagerService(
notificationService NotificationService,
bookingRepo repositories.BookingRepository,
userRepo repositories.UserRepository,
) JobManagerService {
// Use default config from jobs package
manager := jobs.NewManager(notificationService, bookingRepo, userRepo, nil)
return &jobManagerService{
manager: manager,
}
}
// Start starts the job manager
func (s *jobManagerService) Start() error {
return s.manager.Start()
}
// Stop stops the job manager
func (s *jobManagerService) Stop() error {
return s.manager.Stop()
}
// IsRunning returns whether the job manager is running
func (s *jobManagerService) IsRunning() bool {
return s.manager.IsRunning()
}
// ScheduleRemindersForBooking schedules reminders for a booking
func (s *jobManagerService) ScheduleRemindersForBooking(bookingID uint, userID uint, meetingTime time.Time) error {
reminderScheduler := s.manager.GetReminderScheduler()
return reminderScheduler.ScheduleRemindersForBooking(bookingID, userID, meetingTime)
}
// CancelRemindersForBooking cancels reminders for a booking
func (s *jobManagerService) CancelRemindersForBooking(bookingID uint) error {
reminderScheduler := s.manager.GetReminderScheduler()
return reminderScheduler.CancelRemindersForBooking(bookingID)
}