Skip to content

Commit 0085695

Browse files
committed
fix: handle review feedback
1 parent 79c2d0c commit 0085695

2 files changed

Lines changed: 1 addition & 89 deletions

File tree

api/pkg/listeners/send_schedule_listener.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func NewSendScheduleListener(
2525
service *services.SendScheduleService,
2626
) (l *SendScheduleListener, routes map[string]events.EventListener) {
2727
l = &SendScheduleListener{
28-
logger: logger.WithService(fmt.Sprintf("%T", l)),
28+
logger: logger.WithService(fmt.Sprintf("%T", &SendScheduleListener{})),
2929
tracer: tracer,
3030
service: service,
3131
}

api/pkg/services/send_schedule_service.go

Lines changed: 0 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -135,94 +135,6 @@ func (service *SendScheduleService) Delete(
135135
return service.repository.Delete(ctx, userID, scheduleID)
136136
}
137137

138-
// ResolveScheduledSendTime returns the next allowed send time based on the schedule windows and timezone.
139-
func (service *SendScheduleService) ResolveScheduledSendTime(
140-
ctx context.Context,
141-
schedule *entities.MessageSendSchedule,
142-
current time.Time,
143-
) (time.Time, error) {
144-
ctx, span := service.tracer.Start(ctx)
145-
defer span.End()
146-
147-
if schedule == nil || !schedule.IsActive || len(schedule.Windows) == 0 {
148-
return current.UTC(), nil
149-
}
150-
151-
location, err := time.LoadLocation(schedule.Timezone)
152-
if err != nil {
153-
return current.UTC(), service.tracer.WrapErrorSpan(
154-
span,
155-
stacktrace.Propagate(
156-
err,
157-
fmt.Sprintf("cannot load location [%s]", schedule.Timezone),
158-
),
159-
)
160-
}
161-
162-
base := current.In(location)
163-
best := time.Time{}
164-
165-
for dayOffset := 0; dayOffset <= 7; dayOffset++ {
166-
day := base.AddDate(0, 0, dayOffset)
167-
weekday := int(day.Weekday())
168-
169-
for _, window := range schedule.Windows {
170-
if window.DayOfWeek != weekday {
171-
continue
172-
}
173-
174-
start := time.Date(
175-
day.Year(),
176-
day.Month(),
177-
day.Day(),
178-
0,
179-
0,
180-
0,
181-
0,
182-
location,
183-
).Add(time.Duration(window.StartMinute) * time.Minute)
184-
185-
end := time.Date(
186-
day.Year(),
187-
day.Month(),
188-
day.Day(),
189-
0,
190-
0,
191-
0,
192-
0,
193-
location,
194-
).Add(time.Duration(window.EndMinute) * time.Minute)
195-
196-
var candidateTime time.Time
197-
198-
switch {
199-
case dayOffset == 0 && base.Before(start):
200-
candidateTime = start
201-
case dayOffset == 0 && (base.Equal(start) || (base.After(start) && base.Before(end))):
202-
candidateTime = base
203-
case dayOffset > 0:
204-
candidateTime = start
205-
default:
206-
continue
207-
}
208-
209-
if best.IsZero() || candidateTime.Before(best) {
210-
best = candidateTime
211-
}
212-
}
213-
214-
if !best.IsZero() {
215-
break
216-
}
217-
}
218-
219-
if best.IsZero() {
220-
return current.UTC(), nil
221-
}
222-
223-
return best.UTC(), nil
224-
}
225-
226138
// sanitizeWindows normalizes and sorts schedule windows by day and start minute.
227139
func sanitizeWindows(
228140
windows []entities.MessageSendScheduleWindow,

0 commit comments

Comments
 (0)