34
34
//go:embed queries.sql
35
35
efs embed.FS
36
36
ErrUnmetSLAEventAlreadyExists = errors .New ("unmet SLA event already exists, cannot create a new one for the same applied SLA and metric" )
37
+ ErrLatestSLAEventNotFound = errors .New ("latest SLA event not found for the applied SLA and metric" )
37
38
)
38
39
39
40
const (
@@ -162,7 +163,7 @@ func (m *Manager) GetAll() ([]models.SLAPolicy, error) {
162
163
}
163
164
164
165
// Create creates a new SLA policy.
165
- func (m * Manager ) Create (name , description string , firstResponseTime , resolutionTime , nextResponseTime string , notifications models.SlaNotifications ) error {
166
+ func (m * Manager ) Create (name , description string , firstResponseTime , resolutionTime , nextResponseTime null. String , notifications models.SlaNotifications ) error {
166
167
if _ , err := m .q .InsertSLA .Exec (name , description , firstResponseTime , resolutionTime , nextResponseTime , notifications ); err != nil {
167
168
m .lo .Error ("error inserting SLA" , "error" , err )
168
169
return envelope .NewError (envelope .GeneralError , m .i18n .Ts ("globals.messages.errorCreating" , "name" , "{globals.terms.sla}" ), nil )
@@ -171,7 +172,7 @@ func (m *Manager) Create(name, description string, firstResponseTime, resolution
171
172
}
172
173
173
174
// Update updates a SLA policy.
174
- func (m * Manager ) Update (id int , name , description string , firstResponseTime , resolutionTime , nextResponseTime string , notifications models.SlaNotifications ) error {
175
+ func (m * Manager ) Update (id int , name , description string , firstResponseTime , resolutionTime , nextResponseTime null. String , notifications models.SlaNotifications ) error {
175
176
if _ , err := m .q .UpdateSLA .Exec (id , name , description , firstResponseTime , resolutionTime , nextResponseTime , notifications ); err != nil {
176
177
m .lo .Error ("error updating SLA" , "error" , err )
177
178
return envelope .NewError (envelope .GeneralError , m .i18n .Ts ("globals.messages.errorUpdating" , "name" , "{globals.terms.sla}" ), nil )
@@ -220,13 +221,13 @@ func (m *Manager) GetDeadlines(startTime time.Time, slaPolicyID, assignedTeamID
220
221
return deadline , nil
221
222
}
222
223
223
- if deadlines .FirstResponse , err = calculateDeadline (sla .FirstResponseTime ); err != nil {
224
+ if deadlines .FirstResponse , err = calculateDeadline (sla .FirstResponseTime . String ); err != nil {
224
225
return deadlines , err
225
226
}
226
- if deadlines .Resolution , err = calculateDeadline (sla .ResolutionTime ); err != nil {
227
+ if deadlines .Resolution , err = calculateDeadline (sla .ResolutionTime . String ); err != nil {
227
228
return deadlines , err
228
229
}
229
- if deadlines .NextResponse , err = calculateDeadline (sla .NextResponseTime ); err != nil {
230
+ if deadlines .NextResponse , err = calculateDeadline (sla .NextResponseTime . String ); err != nil {
230
231
return deadlines , err
231
232
}
232
233
return deadlines , nil
@@ -278,7 +279,7 @@ func (m *Manager) CreateNextResponseSLAEvent(conversationID, appliedSLAID, slaPo
278
279
return time.Time {}, fmt .Errorf ("fetching SLA policy: %w" , err )
279
280
}
280
281
281
- if slaPolicy .NextResponseTime == "" {
282
+ if slaPolicy .NextResponseTime . String == "" {
282
283
m .lo .Info ("no next response time set for SLA policy, skipping event creation" ,
283
284
"conversation_id" , conversationID ,
284
285
"policy_id" , slaPolicyID ,
@@ -345,7 +346,7 @@ func (m *Manager) SetLatestSLAEventMetAt(appliedSLAID int, metric string) (time.
345
346
if err := m .q .SetLatestSLAEventMetAt .QueryRow (appliedSLAID , metric ).Scan (& metAt ); err != nil {
346
347
if err == sql .ErrNoRows {
347
348
m .lo .Warn ("no SLA event found for applied SLA and metric to update met at" , "applied_sla_id" , appliedSLAID , "metric" , metric )
348
- return metAt , fmt . Errorf ( "no SLA event found for applied SLA ID: %d and metric: %s to update met at" , appliedSLAID , metric )
349
+ return metAt , ErrLatestSLAEventNotFound
349
350
}
350
351
m .lo .Error ("error marking SLA event as met" , "error" , err )
351
352
return metAt , fmt .Errorf ("marking SLA event as met: %w" , err )
0 commit comments