From 7571e5a3f5ded38e69ffd4ffcd8d809c02b1be85 Mon Sep 17 00:00:00 2001 From: Daniel Aloni Date: Tue, 6 Aug 2024 17:49:13 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20sql=20strings=20formatting?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storage/postgres/event_json_table.go | 88 +++++++------- .../storage/sqlite3/event_json_table.go | 111 +++++++++--------- 2 files changed, 96 insertions(+), 103 deletions(-) diff --git a/roomserver/storage/postgres/event_json_table.go b/roomserver/storage/postgres/event_json_table.go index 7454ca0794..230e6b6317 100644 --- a/roomserver/storage/postgres/event_json_table.go +++ b/roomserver/storage/postgres/event_json_table.go @@ -56,61 +56,57 @@ const bulkSelectEventJSONSQL = "" + const selectRoomsUnderSpaceSQL = "" + "WITH room_ids AS (" + - " SELECT DISTINCT" + - " (REGEXP_MATCHES(event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " FROM roomserver_event_json" + - " WHERE event_json LIKE '%\"state_key\":\"$1\"%'" + - " AND event_json LIKE '%\"type\":\"m.space.parent\"%'" + + " SELECT DISTINCT" + + " (REGEXP_MATCHES(event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + + " FROM roomserver_event_json" + + " WHERE event_json LIKE '%\"state_key\":\"$1\"%'" + + " AND event_json LIKE '%\"type\":\"m.space.parent\"%'" + ")," + "dm_rooms AS (" + - " SELECT" + - " ARRAY_AGG(DISTINCT r.room_id) AS dm_array" + - " FROM roomserver_event_json e" + - " CROSS JOIN LATERAL (" + - " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " ) AS r" + - " WHERE e.event_json LIKE '%\"is_direct\":true%'" + - " AND r.room_id = ANY (" + - " SELECT room_id FROM room_ids" + - " )" + + " SELECT" + + " ARRAY_AGG(DISTINCT r.room_id) AS dm_array" + + " FROM roomserver_event_json e" + + " CROSS JOIN LATERAL (" + + " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + + " ) AS r" + + " WHERE e.event_json LIKE '%\"is_direct\":true%'" + + " AND r.room_id = ANY (" + + " SELECT room_id FROM room_ids" + + " )" + ")," + "operation_rooms AS (" + - " SELECT" + - " ARRAY_AGG(DISTINCT r.room_id) AS operation_array" + - " FROM roomserver_event_json e" + - " CROSS JOIN LATERAL (" + - " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " ) AS r" + - " WHERE e.event_json LIKE '%\"type\":\"connect.operation\"%'" + - " AND r.room_id = ANY (" + - " SELECT room_id FROM room_ids" + - " )" + + " SELECT" + + " ARRAY_AGG(DISTINCT r.room_id) AS operation_array" + + " FROM roomserver_event_json e" + + " CROSS JOIN LATERAL (" + + " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + + " ) AS r" + + " WHERE e.event_json LIKE '%\"type\":\"connect.operation\"%'" + + " AND r.room_id = ANY (" + + " SELECT room_id FROM room_ids" + + " )" + ")," + "team_rooms AS (" + - " SELECT" + - " ARRAY_AGG(DISTINCT r.room_id) AS team_array" + - " FROM roomserver_event_json e" + - " CROSS JOIN LATERAL (" + - " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " ) AS r" + - " WHERE r.room_id = ANY (" + - " SELECT room_id FROM room_ids" + - " )" + - " AND r.room_id NOT IN (" + - " SELECT UNNEST(operation_rooms.operation_array) FROM operation_rooms" + - " )" + - " AND r.room_id NOT IN (" + - " SELECT UNNEST(dm_rooms.dm_array) FROM dm_rooms" + - " )" + + " SELECT" + + " ARRAY_AGG(DISTINCT r.room_id) AS team_array" + + " FROM roomserver_event_json e" + + " CROSS JOIN LATERAL (" + + " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id) AS r" + + " WHERE r.room_id = ANY (" + + " SELECT room_id FROM room_ids)" + + " AND r.room_id NOT IN (" + + " SELECT UNNEST(operation_rooms.operation_array) FROM operation_rooms)" + + " AND r.room_id NOT IN (" + + " SELECT UNNEST(dm_rooms.dm_array) FROM dm_rooms)" + ")" + "SELECT" + - " dm_rooms.dm_array," + - " operation_rooms.operation_array," + - " team_rooms.team_array" + + " dm_rooms.dm_array," + + " operation_rooms.operation_array," + + " team_rooms.team_array" + "FROM" + - " dm_rooms," + - " operation_rooms," + - " team_rooms;" + " dm_rooms," + + " operation_rooms," + + " team_rooms" type eventJSONStatements struct { insertEventJSONStmt *sql.Stmt diff --git a/roomserver/storage/sqlite3/event_json_table.go b/roomserver/storage/sqlite3/event_json_table.go index 42c2179b1c..9fd665f134 100644 --- a/roomserver/storage/sqlite3/event_json_table.go +++ b/roomserver/storage/sqlite3/event_json_table.go @@ -46,63 +46,60 @@ const bulkSelectEventJSONSQL = ` ORDER BY event_nid ASC ` -const selectRoomsUnderSpaceSQL = "" + - "WITH room_ids AS (" + - " SELECT DISTINCT" + - " (REGEXP_MATCHES(event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " FROM roomserver_event_json" + - " WHERE event_json LIKE '%\"state_key\":\"$1\"%'" + - " AND event_json LIKE '%\"type\":\"m.space.parent\"%'" + - ")," + - "dm_rooms AS (" + - " SELECT" + - " ARRAY_AGG(DISTINCT r.room_id) AS dm_array" + - " FROM roomserver_event_json e" + - " CROSS JOIN LATERAL (" + - " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " ) AS r" + - " WHERE e.event_json LIKE '%\"is_direct\":true%'" + - " AND r.room_id = ANY (" + - " SELECT room_id FROM room_ids" + - " )" + - ")," + - "operation_rooms AS (" + - " SELECT" + - " ARRAY_AGG(DISTINCT r.room_id) AS operation_array" + - " FROM roomserver_event_json e" + - " CROSS JOIN LATERAL (" + - " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " ) AS r" + - " WHERE e.event_json LIKE '%\"type\":\"connect.operation\"%'" + - " AND r.room_id = ANY (" + - " SELECT room_id FROM room_ids" + - " )" + - ")," + - "team_rooms AS (" + - " SELECT" + - " ARRAY_AGG(DISTINCT r.room_id) AS team_array" + - " FROM roomserver_event_json e" + - " CROSS JOIN LATERAL (" + - " SELECT (REGEXP_MATCHES(e.event_json, '\"room_id\":\"([^\"]+)\"'))[1]::text AS room_id" + - " ) AS r" + - " WHERE r.room_id = ANY (" + - " SELECT room_id FROM room_ids" + - " )" + - " AND r.room_id NOT IN (" + - " SELECT UNNEST(operation_rooms.operation_array) FROM operation_rooms" + - " )" + - " AND r.room_id NOT IN (" + - " SELECT UNNEST(dm_rooms.dm_array) FROM dm_rooms" + - " )" + - ")" + - "SELECT" + - " dm_rooms.dm_array," + - " operation_rooms.operation_array," + - " team_rooms.team_array" + - "FROM" + - " dm_rooms," + - " operation_rooms," + - " team_rooms;" +const selectRoomsUnderSpaceSQL = ` + WITH room_ids AS ( + SELECT DISTINCT + (REGEXP_MATCHES(event_json, '"room_id":"([^"]+)"'))[1]::text AS room_id + FROM roomserver_event_json + WHERE event_json LIKE '%"state_key":"$1"%' + AND event_json LIKE '%"type":"m.space.parent"%' + ), + dm_rooms AS ( + SELECT + ARRAY_AGG(DISTINCT r.room_id) AS dm_array + FROM roomserver_event_json e + CROSS JOIN LATERAL ( + SELECT (REGEXP_MATCHES(e.event_json, '"room_id":"([^"]+)"'))[1]::text AS room_id + ) AS r + WHERE e.event_json LIKE '%"is_direct":true%' + AND r.room_id = ANY ( + SELECT room_id FROM room_ids + ) + ), + operation_rooms AS ( + SELECT + ARRAY_AGG(DISTINCT r.room_id) AS operation_array + FROM roomserver_event_json e + CROSS JOIN LATERAL ( + SELECT (REGEXP_MATCHES(e.event_json, '"room_id":"([^"]+)"'))[1]::text AS room_id + ) AS r + WHERE e.event_json LIKE '%"type":"connect.operation"%' + AND r.room_id = ANY ( + SELECT room_id FROM room_ids + ) + ), + team_rooms AS ( + SELECT + ARRAY_AGG(DISTINCT r.room_id) AS team_array + FROM roomserver_event_json e + CROSS JOIN LATERAL ( + SELECT (REGEXP_MATCHES(e.event_json, '"room_id":"([^"]+)"'))[1]::text AS room_id) AS r + WHERE r.room_id = ANY ( + SELECT room_id FROM room_ids) + AND r.room_id NOT IN ( + SELECT UNNEST(operation_rooms.operation_array) FROM operation_rooms) + AND r.room_id NOT IN ( + SELECT UNNEST(dm_rooms.dm_array) FROM dm_rooms) + ) + SELECT + dm_rooms.dm_array, + operation_rooms.operation_array, + team_rooms.team_array + FROM + dm_rooms, + operation_rooms, + team_rooms +` type eventJSONStatements struct { db *sql.DB