From 89791e1f49886bfc0a69191e4e60e4979d5c1b69 Mon Sep 17 00:00:00 2001 From: Boris Gulay Date: Sun, 3 Feb 2019 19:48:43 +0300 Subject: [PATCH] Fix sqlite scripts. Closes #35. --- SQL/sqlite.initial.sql | 2 +- SQL/sqlite/2018121800.sql | 95 ++++++++++++++++++++++++++++++--------- 2 files changed, 74 insertions(+), 23 deletions(-) diff --git a/SQL/sqlite.initial.sql b/SQL/sqlite.initial.sql index 1ff2ebf..b82db8a 100644 --- a/SQL/sqlite.initial.sql +++ b/SQL/sqlite.initial.sql @@ -1,7 +1,7 @@ CREATE TABLE ident_switch ( id - serial + integer PRIMARY KEY, user_id integer diff --git a/SQL/sqlite/2018121800.sql b/SQL/sqlite/2018121800.sql index 3ff178b..0e6011d 100644 --- a/SQL/sqlite/2018121800.sql +++ b/SQL/sqlite/2018121800.sql @@ -1,25 +1,76 @@ -ALTER TABLE - ident_switch -RENAME COLUMN - host -TO - imap_host; +PRAGMA foreign_keys=off; +BEGIN TRANSACTION; -ALTER TABLE - ident_switch -RENAME COLUMN - port -TO - imap_port; +ALTER TABLE ident_switch RENAME TO ident_switch_old; -ALTER TABLE - ident_switch -ADD COLUMN - smtp_host - varchar(64); - -ALTER TABLE - ident_switch -ADD COLUMN +CREATE TABLE ident_switch +( + id + integer + PRIMARY KEY, + user_id + integer + NOT NULL + REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE, + iid + integer + NOT NULL + REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE + UNIQUE, + username + varchar(64), + password + varchar(64), + imap_host + varchar(64), + imap_port + integer + CHECK(imap_port > 0 AND imap_port <= 65535), + label + varchar(32), + flags + integer + NOT NULL + DEFAULT(0), + smtp_host + varchar(64), smtp_port - int; \ No newline at end of file + integer + CHECK(smtp_port > 0 AND smtp_port <= 65535), + UNIQUE (user_id, label) +); +CREATE INDEX IX_ident_switch_user_id ON ident_switch(user_id); +CREATE INDEX IX_ident_switch_iid on ident_switch(iid); + +INSERT OR ROLLBACK INTO + ident_switch ( + id, + user_id, + iid, + username, + password, + imap_host, + imap_port, + label, + flags, + smtp_host + ) +SELECT + id, + user_id, + iid, + username, + password, + host, + port, + label, + flags, + host, +FROM + ident_switch_old; + +DROP TABLE + ident_switch_old; + +COMMIT; +PRAGMA foreign_keys=on; \ No newline at end of file