diff --git a/backends/rapidpro/backend.go b/backends/rapidpro/backend.go index 67e39d3ea..078e87d4a 100644 --- a/backends/rapidpro/backend.go +++ b/backends/rapidpro/backend.go @@ -517,7 +517,7 @@ func (b *backend) OnSendComplete(ctx context.Context, msg courier.MsgOut, status wasSuccess := status.Status() == courier.MsgStatusWired || status.Status() == courier.MsgStatusSent || status.Status() == courier.MsgStatusDelivered || status.Status() == courier.MsgStatusRead if wasSuccess && dbMsg.Session_ != nil && dbMsg.Session_.Timeout > 0 { if err := b.insertTimeoutFire(ctx, dbMsg); err != nil { - slog.Error("unable to update session timeout", "error", err, "session_id", dbMsg.SessionID_) + slog.Error("unable to update session timeout", "error", err, "session_uuid", dbMsg.Session_.UUID) } } diff --git a/backends/rapidpro/backend_test.go b/backends/rapidpro/backend_test.go index e087544dd..53d9c487b 100644 --- a/backends/rapidpro/backend_test.go +++ b/backends/rapidpro/backend_test.go @@ -1369,16 +1369,14 @@ func (ts *BackendTestSuite) TestSessionTimeout() { err := ts.b.insertTimeoutFire(ctx, msg) ts.NoError(err) - 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`). + assertdb.Query(ts.T(), ts.b.db, `SELECT org_id, contact_id, fire_type, scope, session_uuid::text, sprint_uuid::text FROM contacts_contactfire`). Columns(map[string]any{ - "org_id": int64(1), - "contact_id": int64(100), - "fire_type": "T", - "scope": "", - "session_uuid": "79c1dbc6-4200-4333-b17a-1f996273a4cb", - "sprint_uuid": "0897c392-8b08-43c4-b9d9-e75d332a2c58", - "session_id": "12345", - "session_modified_on": "2025-01-28T20:43:34.157379218Z", + "org_id": int64(1), + "contact_id": int64(100), + "fire_type": "T", + "scope": "", + "session_uuid": "79c1dbc6-4200-4333-b17a-1f996273a4cb", + "sprint_uuid": "0897c392-8b08-43c4-b9d9-e75d332a2c58", }) // if there's a conflict (e.g. in this case trying to add same timeout again), it should be ignored diff --git a/backends/rapidpro/msg.go b/backends/rapidpro/msg.go index faab37861..f1ca29b2f 100644 --- a/backends/rapidpro/msg.go +++ b/backends/rapidpro/msg.go @@ -92,10 +92,6 @@ type Msg struct { channel *Channel workerToken queue.WorkerToken alreadyWritten bool - - // deprecated - SessionID_ SessionID `json:"session_id"` - SessionModifiedOn_ *time.Time `json:"session_modified_on"` } // newMsg creates a new DBMsg object with the passed in parameters diff --git a/backends/rapidpro/timeouts.go b/backends/rapidpro/timeouts.go index ce4ef428d..34ee220be 100644 --- a/backends/rapidpro/timeouts.go +++ b/backends/rapidpro/timeouts.go @@ -6,7 +6,6 @@ import ( "time" "github.com/nyaruka/gocommon/dates" - "github.com/nyaruka/gocommon/jsonx" ) // SessionID is our type for RapidPro session ids @@ -14,17 +13,16 @@ type SessionID int64 const sqlInsertTimeoutFire = ` INSERT INTO contacts_contactfire(org_id, contact_id, fire_type, scope, fire_on, session_uuid, sprint_uuid, extra) - VALUES($1, $2, 'T', '', $3, $4, $5, $6) + VALUES($1, $2, 'T', '', $3, $4, $5, '{}') ON CONFLICT DO NOTHING` // insertTimeoutFire inserts a timeout fire for the session associated with the given msg func (b *backend) insertTimeoutFire(ctx context.Context, m *Msg) error { - extra := map[string]any{"session_id": m.SessionID_, "session_modified_on": m.SessionModifiedOn_} timeoutOn := dates.Now().Add(time.Duration(m.Session_.Timeout) * time.Second) - _, err := b.db.ExecContext(ctx, sqlInsertTimeoutFire, m.OrgID_, m.ContactID_, timeoutOn, m.Session_.UUID, m.Session_.SprintUUID, jsonx.MustMarshal(extra)) + _, err := b.db.ExecContext(ctx, sqlInsertTimeoutFire, m.OrgID_, m.ContactID_, timeoutOn, m.Session_.UUID, m.Session_.SprintUUID) if err != nil { - return fmt.Errorf("error inserting session timeout contact fire for session #%d: %w", m.SessionID_, err) + return fmt.Errorf("error inserting session timeout contact fire for session %s: %w", m.Session_.UUID, err) } return nil }