57 lines
1.8 KiB
Go
57 lines
1.8 KiB
Go
package schedule
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"velox-bot/internal/db/repos/schedulerepo"
|
|
)
|
|
|
|
type Service struct {
|
|
repo *schedulerepo.Repo
|
|
}
|
|
|
|
func New(repo *schedulerepo.Repo) *Service {
|
|
return &Service{repo: repo}
|
|
}
|
|
|
|
func (s *Service) CreateSchedule(ctx context.Context, guildID, requesterID, inviteeID int64, when time.Time, description string) (int64, error) {
|
|
return s.repo.CreateSchedule(ctx, guildID, requesterID, inviteeID, when, description)
|
|
}
|
|
|
|
func (s *Service) UpdateStatus(ctx context.Context, scheduleID int64, status schedulerepo.ScheduleStatus) error {
|
|
return s.repo.UpdateStatus(ctx, scheduleID, status)
|
|
}
|
|
|
|
func (s *Service) ListForUser(ctx context.Context, guildID, userID int64, limit int) ([]*schedulerepo.Schedule, error) {
|
|
return s.repo.ListForUser(ctx, guildID, userID, limit)
|
|
}
|
|
|
|
func (s *Service) ListDueForReminder(ctx context.Context, now time.Time, ahead time.Duration) ([]*schedulerepo.Schedule, error) {
|
|
return s.repo.ListDueForReminder(ctx, now, ahead)
|
|
}
|
|
|
|
func (s *Service) MarkReminded(ctx context.Context, scheduleID int64) error {
|
|
return s.repo.MarkReminded(ctx, scheduleID)
|
|
}
|
|
|
|
func (s *Service) GetByID(ctx context.Context, id int64) (*schedulerepo.Schedule, error) {
|
|
return s.repo.GetByID(ctx, id)
|
|
}
|
|
|
|
func (s *Service) Reschedule(ctx context.Context, id int64, when time.Time) error {
|
|
return s.repo.Reschedule(ctx, id, when)
|
|
}
|
|
|
|
func (s *Service) ProposeReschedule(ctx context.Context, scheduleID int64, newTime time.Time, proposedBy int64) error {
|
|
return s.repo.ProposeReschedule(ctx, scheduleID, newTime, proposedBy)
|
|
}
|
|
|
|
func (s *Service) AcceptReschedule(ctx context.Context, id int64) error {
|
|
return s.repo.AcceptReschedule(ctx, id)
|
|
}
|
|
|
|
func (s *Service) DeclineReschedule(ctx context.Context, id int64) error {
|
|
return s.repo.DeclineReschedule(ctx, id)
|
|
}
|