Skip to content

Commit aed990d

Browse files
authored
Merge pull request #832 from nyaruka/simpler_fires
Simplify contact fire inserted for timeouts
2 parents d527674 + 27615ec commit aed990d

File tree

4 files changed

+11
-19
lines changed

4 files changed

+11
-19
lines changed

Diff for: backends/rapidpro/backend.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ func (b *backend) OnSendComplete(ctx context.Context, msg courier.MsgOut, status
517517
wasSuccess := status.Status() == courier.MsgStatusWired || status.Status() == courier.MsgStatusSent || status.Status() == courier.MsgStatusDelivered || status.Status() == courier.MsgStatusRead
518518
if wasSuccess && dbMsg.Session_ != nil && dbMsg.Session_.Timeout > 0 {
519519
if err := b.insertTimeoutFire(ctx, dbMsg); err != nil {
520-
slog.Error("unable to update session timeout", "error", err, "session_id", dbMsg.SessionID_)
520+
slog.Error("unable to update session timeout", "error", err, "session_uuid", dbMsg.Session_.UUID)
521521
}
522522
}
523523

Diff for: backends/rapidpro/backend_test.go

+7-9
Original file line numberDiff line numberDiff line change
@@ -1369,16 +1369,14 @@ func (ts *BackendTestSuite) TestSessionTimeout() {
13691369
err := ts.b.insertTimeoutFire(ctx, msg)
13701370
ts.NoError(err)
13711371

1372-
assertdb.Query(ts.T(), ts.b.db, `SELECT org_id, contact_id, fire_type, scope, session_uuid::text, sprint_uuid::text, extra->>'session_id' AS session_id, extra->>'session_modified_on' AS session_modified_on FROM contacts_contactfire`).
1372+
assertdb.Query(ts.T(), ts.b.db, `SELECT org_id, contact_id, fire_type, scope, session_uuid::text, sprint_uuid::text FROM contacts_contactfire`).
13731373
Columns(map[string]any{
1374-
"org_id": int64(1),
1375-
"contact_id": int64(100),
1376-
"fire_type": "T",
1377-
"scope": "",
1378-
"session_uuid": "79c1dbc6-4200-4333-b17a-1f996273a4cb",
1379-
"sprint_uuid": "0897c392-8b08-43c4-b9d9-e75d332a2c58",
1380-
"session_id": "12345",
1381-
"session_modified_on": "2025-01-28T20:43:34.157379218Z",
1374+
"org_id": int64(1),
1375+
"contact_id": int64(100),
1376+
"fire_type": "T",
1377+
"scope": "",
1378+
"session_uuid": "79c1dbc6-4200-4333-b17a-1f996273a4cb",
1379+
"sprint_uuid": "0897c392-8b08-43c4-b9d9-e75d332a2c58",
13821380
})
13831381

13841382
// if there's a conflict (e.g. in this case trying to add same timeout again), it should be ignored

Diff for: backends/rapidpro/msg.go

-4
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,6 @@ type Msg struct {
9292
channel *Channel
9393
workerToken queue.WorkerToken
9494
alreadyWritten bool
95-
96-
// deprecated
97-
SessionID_ SessionID `json:"session_id"`
98-
SessionModifiedOn_ *time.Time `json:"session_modified_on"`
9995
}
10096

10197
// newMsg creates a new DBMsg object with the passed in parameters

Diff for: backends/rapidpro/timeouts.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,23 @@ import (
66
"time"
77

88
"github.com/nyaruka/gocommon/dates"
9-
"github.com/nyaruka/gocommon/jsonx"
109
)
1110

1211
// SessionID is our type for RapidPro session ids
1312
type SessionID int64
1413

1514
const sqlInsertTimeoutFire = `
1615
INSERT INTO contacts_contactfire(org_id, contact_id, fire_type, scope, fire_on, session_uuid, sprint_uuid, extra)
17-
VALUES($1, $2, 'T', '', $3, $4, $5, $6)
16+
VALUES($1, $2, 'T', '', $3, $4, $5, '{}')
1817
ON CONFLICT DO NOTHING`
1918

2019
// insertTimeoutFire inserts a timeout fire for the session associated with the given msg
2120
func (b *backend) insertTimeoutFire(ctx context.Context, m *Msg) error {
22-
extra := map[string]any{"session_id": m.SessionID_, "session_modified_on": m.SessionModifiedOn_}
2321
timeoutOn := dates.Now().Add(time.Duration(m.Session_.Timeout) * time.Second)
2422

25-
_, err := b.db.ExecContext(ctx, sqlInsertTimeoutFire, m.OrgID_, m.ContactID_, timeoutOn, m.Session_.UUID, m.Session_.SprintUUID, jsonx.MustMarshal(extra))
23+
_, err := b.db.ExecContext(ctx, sqlInsertTimeoutFire, m.OrgID_, m.ContactID_, timeoutOn, m.Session_.UUID, m.Session_.SprintUUID)
2624
if err != nil {
27-
return fmt.Errorf("error inserting session timeout contact fire for session #%d: %w", m.SessionID_, err)
25+
return fmt.Errorf("error inserting session timeout contact fire for session %s: %w", m.Session_.UUID, err)
2826
}
2927
return nil
3028
}

0 commit comments

Comments
 (0)