Make euph_trees a table instead of a view
This commit is contained in:
parent
b30adaf17c
commit
6facbd5c96
2 changed files with 27 additions and 13 deletions
|
|
@ -301,6 +301,28 @@ impl EuphRequest {
|
|||
])?;
|
||||
}
|
||||
|
||||
// Update euph_trees
|
||||
tx.execute_batch(
|
||||
"
|
||||
DELETE FROM euph_trees;
|
||||
|
||||
INSERT INTO euph_trees (room, id)
|
||||
SELECT room, id
|
||||
FROM euph_msgs
|
||||
WHERE parent IS NULL
|
||||
UNION
|
||||
SELECT room, parent
|
||||
FROM euph_msgs
|
||||
WHERE parent IS NOT NULL
|
||||
AND NOT EXISTS(
|
||||
SELECT *
|
||||
FROM euph_msgs AS parents
|
||||
WHERE parents.room = euph_msgs.room
|
||||
AND parents.id = euph_msgs.parent
|
||||
);
|
||||
",
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,19 +60,11 @@ fn m1(tx: &mut Transaction) -> rusqlite::Result<()> {
|
|||
CHECK (start IS NULL OR end IS NOT NULL)
|
||||
) STRICT;
|
||||
|
||||
CREATE VIEW euph_trees (room, id) AS
|
||||
SELECT room, id
|
||||
FROM euph_msgs
|
||||
WHERE parent IS NULL
|
||||
UNION
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT room, parent
|
||||
FROM euph_msgs
|
||||
WHERE parent IS NOT NULL
|
||||
EXCEPT
|
||||
SELECT room, id
|
||||
FROM euph_msgs
|
||||
CREATE TABLE euph_trees (
|
||||
room TEXT NOT NULL,
|
||||
id INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (room, id)
|
||||
);
|
||||
|
||||
CREATE INDEX euph_idx_msgs_room_id_parent
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue