mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-19 18:13:41 -05:00
hicli/database: add temporary hacky fix for reaction aggregations
The aggregations will be redone properly later
This commit is contained in:
parent
0e328c44d3
commit
014c8c07a8
2 changed files with 49 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
|||
-- v0 -> v5 (compatible with v5+): Latest revision
|
||||
-- v0 -> v6 (compatible with v5+): Latest revision
|
||||
CREATE TABLE account (
|
||||
user_id TEXT NOT NULL PRIMARY KEY,
|
||||
device_id TEXT NOT NULL,
|
||||
|
@ -158,6 +158,7 @@ CREATE TRIGGER event_insert_fill_reactions
|
|||
AND NEW.relation_type = 'm.annotation'
|
||||
AND NEW.redacted_by IS NULL
|
||||
AND typeof(NEW.content ->> '$."m.relates_to".key') = 'text'
|
||||
AND NEW.content ->> '$."m.relates_to".key' NOT LIKE '%"%'
|
||||
BEGIN
|
||||
UPDATE event
|
||||
SET reactions=json_set(
|
||||
|
@ -179,6 +180,7 @@ CREATE TRIGGER event_redact_fill_reactions
|
|||
AND NEW.redacted_by IS NOT NULL
|
||||
AND OLD.redacted_by IS NULL
|
||||
AND typeof(NEW.content ->> '$."m.relates_to".key') = 'text'
|
||||
AND NEW.content ->> '$."m.relates_to".key' NOT LIKE '%"%'
|
||||
BEGIN
|
||||
UPDATE event
|
||||
SET reactions=json_set(
|
||||
|
|
46
pkg/hicli/database/upgrades/06-hacky-reaction-fix.sql
Normal file
46
pkg/hicli/database/upgrades/06-hacky-reaction-fix.sql
Normal file
|
@ -0,0 +1,46 @@
|
|||
-- v6 (compatible with v5+): Add hack for reaction aggregation
|
||||
DROP TRIGGER event_insert_fill_reactions;
|
||||
DROP TRIGGER event_redact_fill_reactions;
|
||||
|
||||
CREATE TRIGGER event_insert_fill_reactions
|
||||
AFTER INSERT
|
||||
ON event
|
||||
WHEN NEW.type = 'm.reaction'
|
||||
AND NEW.relation_type = 'm.annotation'
|
||||
AND NEW.redacted_by IS NULL
|
||||
AND typeof(NEW.content ->> '$."m.relates_to".key') = 'text'
|
||||
AND NEW.content ->> '$."m.relates_to".key' NOT LIKE '%"%'
|
||||
BEGIN
|
||||
UPDATE event
|
||||
SET reactions=json_set(
|
||||
reactions,
|
||||
'$.' || json_quote(NEW.content ->> '$."m.relates_to".key'),
|
||||
coalesce(
|
||||
reactions ->> ('$.' || json_quote(NEW.content ->> '$."m.relates_to".key')),
|
||||
0
|
||||
) + 1)
|
||||
WHERE event_id = NEW.relates_to
|
||||
AND reactions IS NOT NULL;
|
||||
END;
|
||||
|
||||
CREATE TRIGGER event_redact_fill_reactions
|
||||
AFTER UPDATE
|
||||
ON event
|
||||
WHEN NEW.type = 'm.reaction'
|
||||
AND NEW.relation_type = 'm.annotation'
|
||||
AND NEW.redacted_by IS NOT NULL
|
||||
AND OLD.redacted_by IS NULL
|
||||
AND typeof(NEW.content ->> '$."m.relates_to".key') = 'text'
|
||||
AND NEW.content ->> '$."m.relates_to".key' NOT LIKE '%"%'
|
||||
BEGIN
|
||||
UPDATE event
|
||||
SET reactions=json_set(
|
||||
reactions,
|
||||
'$.' || json_quote(NEW.content ->> '$."m.relates_to".key'),
|
||||
coalesce(
|
||||
reactions ->> ('$.' || json_quote(NEW.content ->> '$."m.relates_to".key')),
|
||||
0
|
||||
) - 1)
|
||||
WHERE event_id = NEW.relates_to
|
||||
AND reactions IS NOT NULL;
|
||||
END;
|
Loading…
Add table
Reference in a new issue