Make euph_trees a temporary database
This commit is contained in:
parent
f272bc6dcb
commit
ad3a67cdc3
3 changed files with 31 additions and 7 deletions
|
|
@ -60,13 +60,6 @@ fn m1(tx: &mut Transaction) -> rusqlite::Result<()> {
|
|||
CHECK (start IS NULL OR end IS NOT NULL)
|
||||
) STRICT;
|
||||
|
||||
CREATE TABLE euph_trees (
|
||||
room TEXT NOT NULL,
|
||||
id INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (room, id)
|
||||
);
|
||||
|
||||
CREATE INDEX euph_idx_msgs_room_id_parent
|
||||
ON euph_msgs (room, id, parent);
|
||||
|
||||
|
|
|
|||
29
src/vault/prepare.rs
Normal file
29
src/vault/prepare.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use rusqlite::Connection;
|
||||
|
||||
pub fn prepare(conn: &mut Connection) -> rusqlite::Result<()> {
|
||||
conn.execute_batch(
|
||||
"
|
||||
CREATE TEMPORARY TABLE euph_trees (
|
||||
room TEXT NOT NULL,
|
||||
id INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (room, id)
|
||||
) STRICT;
|
||||
|
||||
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
|
||||
);
|
||||
",
|
||||
)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue