diff --git a/src/db/mod.rs b/src/db/mod.rs index 5e92a8e6..46e6c490 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -116,6 +116,7 @@ fn upgrade(db: &Connection, mut version: u16) -> Result<(), Error> { apply_sql!(db, version, 9, "schema9.sql"); apply_sql!(db, version, 10, "schema10.sql"); apply_sql!(db, version, 11, "schema11.sql"); + apply_sql!(db, version, 12, "schema12.sql"); tracing::info!("Database is at version {}", version); Ok(()) } diff --git a/src/db/schema12.sql b/src/db/schema12.sql new file mode 100644 index 00000000..976ca749 --- /dev/null +++ b/src/db/schema12.sql @@ -0,0 +1,24 @@ + +ALTER TABLE event_hashtag RENAME TO event_hashtag_old; +CREATE TABLE event_hashtag ( + event TEXT NOT NULL, + hashtag TEXT NOT NULL, + UNIQUE(event, hashtag), + CONSTRAINT fk_event FOREIGN KEY (event) REFERENCES event (id) ON DELETE CASCADE +); +INSERT OR IGNORE INTO event_hashtag (event, hashtag) SELECT event, hashtag FROM event_hashtag_old; +DROP TABLE event_hashtag_old; + + +ALTER TABLE event_relationship RENAME TO event_relationship_old; +CREATE TABLE event_relationship ( + original TEXT NOT NULL, + refers_to TEXT NOT NULL, + relationship TEXT CHECK (relationship IN ('reply', 'quote', 'reaction', 'deletion')) NOT NULL, + content TEXT DEFAULT NULL, + CONSTRAINT fk_original FOREIGN KEY (original) REFERENCES event (id) ON DELETE CASCADE, + UNIQUE(original, refers_to) +); +INSERT OR IGNORE INTO event_relationship (original, refers_to, relationship, content) + SELECT original, referring, relationship, content FROM event_relationship_old; +DROP TABLE event_relationship_old;