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 "##"