Skip to content

Commit 04d8945

Browse files
committed
Track history of flow ids on contacts
1 parent 89d77bd commit 04d8945

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

contacts/index_settings.json

+3
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@
153153
"flow": {
154154
"type": "keyword"
155155
},
156+
"flow_history": {
157+
"type": "integer"
158+
},
156159
"tickets": {
157160
"type": "integer"
158161
},

contacts/query.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,15 @@ SELECT org_id, id, modified_on, is_active, row_to_json(t) FROM (
6161
) AS groups,
6262
(
6363
SELECT f.uuid FROM flows_flow f WHERE f.id = contacts_contact.current_flow_id
64-
) AS flow
64+
) AS flow,
65+
(
66+
SELECT array_to_json(array_agg(DISTINCT fr.flow_id))
67+
FROM flows_flowrun fr WHERE fr.contact_id = contacts_contact.id
68+
) AS flow_history
6569
FROM contacts_contact
6670
WHERE modified_on >= $1
6771
ORDER BY modified_on ASC
68-
LIMIT 500000
72+
LIMIT 100000
6973
) t;
7074
`
7175

indexer_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ func TestIndexing(t *testing.T) {
104104
assertQuery(t, client, physicalName, elastic.NewMatchQuery("flow", "6d3cf1eb-546e-4fb8-a5ca-69187648fbf6"), []int64{2, 3})
105105
assertQuery(t, client, physicalName, elastic.NewMatchQuery("flow", "4eea8ff1-4fe2-4ce5-92a4-0870a499973a"), []int64{4})
106106

107+
assertQuery(t, client, physicalName, elastic.NewMatchQuery("flow_history", 1), []int64{1, 2})
108+
assertQuery(t, client, physicalName, elastic.NewMatchQuery("flow_history", 2), []int64{1})
109+
107110
// created_on range query
108111
assertQuery(t, client, physicalName, elastic.NewRangeQuery("created_on").Gt("2017-01-01"), []int64{1, 6, 8})
109112

testdb.sql

+15
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ CREATE TABLE contacts_contactgroup_contacts (
5252
contact_id integer NOT NULL REFERENCES contacts_contact(id)
5353
);
5454

55+
56+
DROP TABLE IF EXISTS flows_flowrun CASCADE;
57+
CREATE TABLE flows_flowrun (
58+
id SERIAL PRIMARY KEY,
59+
uuid character varying(36) NOT NULL,
60+
flow_id integer REFERENCES flows_flow(id),
61+
contact_id integer REFERENCES contacts_contact(id)
62+
);
63+
5564
INSERT INTO flows_flow(id, uuid, name) VALUES
5665
(1, '6d3cf1eb-546e-4fb8-a5ca-69187648fbf6', 'Favorites'),
5766
(2, '4eea8ff1-4fe2-4ce5-92a4-0870a499973a', 'Catch All');
@@ -152,3 +161,9 @@ INSERT INTO contacts_contactgroup_contacts(id, contact_id, contactgroup_id) VALU
152161
(1, 1, 1),
153162
(2, 1, 4),
154163
(3, 2, 4);
164+
165+
INSERT INTO flows_flowrun(id, uuid, flow_id, contact_id) VALUES
166+
(1, '8b30ee61-e19d-427e-bb9f-4b8cd2c31d0c', 1, 1),
167+
(2, '94639979-155e-444d-95e9-a39dad64dbd5', 1, 1),
168+
(3, '74d918df-0e31-4547-98a9-5d765450e2ac', 2, 1),
169+
(4, '14fdf8fc-6e02-4759-b9be-cacc5991cd14', 1, 2);

0 commit comments

Comments
 (0)