From f95ab32e24a77ff71c34a3f912ec6ba58da9e032 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 13 Aug 2020 19:59:05 +0200 Subject: [PATCH] SQL for labels. #102. --- resources/sql.qrc | 2 ++ resources/sql/db_init_mysql.sql | 20 ++++++++++++++++++-- resources/sql/db_init_sqlite.sql | 20 +++++++++++++++++++- resources/sql/db_update_mysql_15_16.sql | 19 +++++++++++++++++++ resources/sql/db_update_sqlite_15_16.sql | 19 +++++++++++++++++++ src/librssguard/definitions/definitions.h | 2 +- 6 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 resources/sql/db_update_mysql_15_16.sql create mode 100644 resources/sql/db_update_sqlite_15_16.sql diff --git a/resources/sql.qrc b/resources/sql.qrc index 1d36007d5..dfde11c96 100755 --- a/resources/sql.qrc +++ b/resources/sql.qrc @@ -15,6 +15,7 @@ sql/db_update_mysql_12_13.sql sql/db_update_mysql_13_14.sql sql/db_update_mysql_14_15.sql + sql/db_update_mysql_15_16.sql sql/db_init_sqlite.sql sql/db_update_sqlite_1_2.sql @@ -31,5 +32,6 @@ sql/db_update_sqlite_12_13.sql sql/db_update_sqlite_13_14.sql sql/db_update_sqlite_14_15.sql + sql/db_update_sqlite_15_16.sql \ No newline at end of file diff --git a/resources/sql/db_init_mysql.sql b/resources/sql/db_init_mysql.sql index c243700d1..81196628d 100644 --- a/resources/sql/db_init_mysql.sql +++ b/resources/sql/db_init_mysql.sql @@ -12,7 +12,7 @@ CREATE TABLE IF NOT EXISTS Information ( inf_value TEXT NOT NULL ); -- ! -INSERT INTO Information VALUES (1, 'schema_version', '15'); +INSERT INTO Information VALUES (1, 'schema_version', '16'); -- ! CREATE TABLE IF NOT EXISTS Accounts ( id INTEGER PRIMARY KEY, @@ -144,4 +144,20 @@ CREATE TABLE IF NOT EXISTS MessageFiltersInFeeds ( FOREIGN KEY (account_id) REFERENCES Accounts (id) ON DELETE CASCADE ); -- ! -UPDATE Information SET inf_value = '15' WHERE inf_key = 'schema_version'; \ No newline at end of file +CREATE TABLE IF NOT EXISTS Labels ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL CHECK (name != ''), + color VARCHAR(7), + custom_id TEXT, + account_id INTEGER NOT NULL, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) +); +-- ! +CREATE TABLE IF NOT EXISTS LabelsInMessages ( + label TEXT NOT NULL, /* Custom ID of label. */ + message TEXT NOT NULL, /* Custom ID of message. */ + account_id INTEGER NOT NULL, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) ON DELETE CASCADE +); \ No newline at end of file diff --git a/resources/sql/db_init_sqlite.sql b/resources/sql/db_init_sqlite.sql index f63eb891e..de46eaeca 100644 --- a/resources/sql/db_init_sqlite.sql +++ b/resources/sql/db_init_sqlite.sql @@ -6,7 +6,7 @@ CREATE TABLE IF NOT EXISTS Information ( inf_value TEXT NOT NULL ); -- ! -INSERT INTO Information VALUES (1, 'schema_version', '15'); +INSERT INTO Information VALUES (1, 'schema_version', '16'); -- ! CREATE TABLE IF NOT EXISTS Accounts ( id INTEGER PRIMARY KEY, @@ -135,5 +135,23 @@ CREATE TABLE IF NOT EXISTS MessageFiltersInFeeds ( account_id INTEGER NOT NULL, FOREIGN KEY (filter) REFERENCES MessageFilters (id) ON DELETE CASCADE, + FOREIGN KEY (account_id) REFERENCES Accounts (id) ON DELETE CASCADE +); +-- ! +CREATE TABLE IF NOT EXISTS Labels ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL CHECK (name != ''), + color VARCHAR(7), + custom_id TEXT, + account_id INTEGER NOT NULL, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) +); +-- ! +CREATE TABLE IF NOT EXISTS LabelsInMessages ( + label TEXT NOT NULL, /* Custom ID of label. */ + message TEXT NOT NULL, /* Custom ID of message. */ + account_id INTEGER NOT NULL, + FOREIGN KEY (account_id) REFERENCES Accounts (id) ON DELETE CASCADE ); \ No newline at end of file diff --git a/resources/sql/db_update_mysql_15_16.sql b/resources/sql/db_update_mysql_15_16.sql new file mode 100644 index 000000000..f42d89d82 --- /dev/null +++ b/resources/sql/db_update_mysql_15_16.sql @@ -0,0 +1,19 @@ +CREATE TABLE IF NOT EXISTS Labels ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL CHECK (name != ''), + color VARCHAR(7), + custom_id TEXT, + account_id INTEGER NOT NULL, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) +); +-- ! +CREATE TABLE IF NOT EXISTS LabelsInMessages ( + label TEXT NOT NULL, /* Custom ID of label. */ + message TEXT NOT NULL, /* Custom ID of message. */ + account_id INTEGER NOT NULL, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) ON DELETE CASCADE +); +-- ! +UPDATE Information SET inf_value = '16' WHERE inf_key = 'schema_version'; \ No newline at end of file diff --git a/resources/sql/db_update_sqlite_15_16.sql b/resources/sql/db_update_sqlite_15_16.sql new file mode 100644 index 000000000..bb355d7bc --- /dev/null +++ b/resources/sql/db_update_sqlite_15_16.sql @@ -0,0 +1,19 @@ +CREATE TABLE IF NOT EXISTS Labels ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL CHECK (name != ''), + color VARCHAR(7), + custom_id TEXT, + account_id INTEGER NOT NULL, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) +); +-- ! +CREATE TABLE IF NOT EXISTS LabelsInMessages ( + label TEXT NOT NULL, /* Custom ID of label. */ + message TEXT NOT NULL, /* Custom ID of message. */ + account_id INTEGER NOT NULL, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) ON DELETE CASCADE +); +-- ! +UPDATE Information SET inf_value = '16' WHERE inf_key = 'schema_version'; \ No newline at end of file diff --git a/src/librssguard/definitions/definitions.h b/src/librssguard/definitions/definitions.h index 9ca5006d4..40331ed0c 100755 --- a/src/librssguard/definitions/definitions.h +++ b/src/librssguard/definitions/definitions.h @@ -132,7 +132,7 @@ #define APP_DB_SQLITE_FILE "database.db" // Keep this in sync with schema versions declared in SQL initialization code. -#define APP_DB_SCHEMA_VERSION "15" +#define APP_DB_SCHEMA_VERSION "16" #define APP_DB_UPDATE_FILE_PATTERN "db_update_%1_%2_%3.sql" #define APP_DB_COMMENT_SPLIT "-- !\n" #define APP_DB_NAME_PLACEHOLDER "##"