Skip to content

Commit 70b5da2

Browse files
committed
fix: change SLA deadline fields to use nullable types
1 parent 88ef5d2 commit 70b5da2

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

internal/sla/models/models.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ type AppliedSLA struct {
7575
Status string `db:"status"`
7676
ConversationID int `db:"conversation_id"`
7777
SLAPolicyID int `db:"sla_policy_id"`
78-
FirstResponseDeadlineAt time.Time `db:"first_response_deadline_at"`
79-
ResolutionDeadlineAt time.Time `db:"resolution_deadline_at"`
78+
FirstResponseDeadlineAt null.Time `db:"first_response_deadline_at"`
79+
ResolutionDeadlineAt null.Time `db:"resolution_deadline_at"`
8080
FirstResponseBreachedAt null.Time `db:"first_response_breached_at"`
8181
ResolutionBreachedAt null.Time `db:"resolution_breached_at"`
8282
FirstResponseMetAt null.Time `db:"first_response_met_at"`

internal/sla/sla.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -617,10 +617,10 @@ func (m *Manager) SendNotification(scheduledNotification models.ScheduledSLANoti
617617

618618
switch scheduledNotification.Metric {
619619
case MetricFirstResponse:
620-
dueIn = getFriendlyDuration(appliedSLA.FirstResponseDeadlineAt)
620+
dueIn = getFriendlyDuration(appliedSLA.FirstResponseDeadlineAt.Time)
621621
overdueBy = getFriendlyDuration(appliedSLA.FirstResponseBreachedAt.Time)
622622
case MetricResolution:
623-
dueIn = getFriendlyDuration(appliedSLA.ResolutionDeadlineAt)
623+
dueIn = getFriendlyDuration(appliedSLA.ResolutionDeadlineAt.Time)
624624
overdueBy = getFriendlyDuration(appliedSLA.ResolutionBreachedAt.Time)
625625
case MetricNextResponse:
626626
dueIn = getFriendlyDuration(slaEvent.DeadlineAt)
@@ -828,7 +828,7 @@ func (m *Manager) evaluateSLA(sla models.AppliedSLA) error {
828828
m.lo.Debug("evaluating SLA", "conversation_id", sla.ConversationID, "applied_sla_id", sla.ID)
829829
checkDeadline := func(deadline time.Time, metAt null.Time, metric string) error {
830830
if deadline.IsZero() {
831-
m.lo.Warn("deadline zero, skipping checking the deadline")
831+
m.lo.Warn("deadline zero, skipping checking the deadline", "conversation_id", sla.ConversationID, "applied_sla_id", sla.ID, "metric", metric)
832832
return nil
833833
}
834834

@@ -860,15 +860,15 @@ func (m *Manager) evaluateSLA(sla models.AppliedSLA) error {
860860
// If first response is not breached and not met, check the deadline and set them.
861861
if !sla.FirstResponseBreachedAt.Valid && !sla.FirstResponseMetAt.Valid {
862862
m.lo.Debug("checking deadline", "deadline", sla.FirstResponseDeadlineAt, "met_at", sla.ConversationFirstResponseAt.Time, "metric", MetricFirstResponse)
863-
if err := checkDeadline(sla.FirstResponseDeadlineAt, sla.ConversationFirstResponseAt, MetricFirstResponse); err != nil {
863+
if err := checkDeadline(sla.FirstResponseDeadlineAt.Time, sla.ConversationFirstResponseAt, MetricFirstResponse); err != nil {
864864
return err
865865
}
866866
}
867867

868868
// If resolution is not breached and not met, check the deadine and set them.
869869
if !sla.ResolutionBreachedAt.Valid && !sla.ResolutionMetAt.Valid {
870870
m.lo.Debug("checking deadline", "deadline", sla.ResolutionDeadlineAt, "met_at", sla.ConversationResolvedAt.Time, "metric", MetricResolution)
871-
if err := checkDeadline(sla.ResolutionDeadlineAt, sla.ConversationResolvedAt, MetricResolution); err != nil {
871+
if err := checkDeadline(sla.ResolutionDeadlineAt.Time, sla.ConversationResolvedAt, MetricResolution); err != nil {
872872
return err
873873
}
874874
}

0 commit comments

Comments
 (0)