From 8907a3d52959565dd9e09fd9f875018a72dd5b39 Mon Sep 17 00:00:00 2001 From: pawpMudita Date: Mon, 5 Oct 2020 18:20:50 +0200 Subject: [PATCH] EGD-3868 Create queries for settings --- changelog.md | 2 +- .../service-db/agents/settings/settings.sql | 18 +++++ .../workers/settings/settings_queries.hpp | 81 +++++++++++++++++++ 3 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 module-services/service-db/workers/settings/settings_queries.hpp diff --git a/changelog.md b/changelog.md index 0381c5a39f8fcf15f09cf1d1e245a9b540a85df1..aac5aa85d885f0fc7ae02a7377f0038a1de7f224 100644 --- a/changelog.md +++ b/changelog.md @@ -15,7 +15,7 @@ * `[audio]` Added vibration/enable sound database logic * `[settings]` Create main window for apps and tools * `[meditation]` Added a meditation progress bar with simple implementation of meditation application. - +* `[settings]` Create set of queries required for settings. ### Changed diff --git a/module-services/service-db/agents/settings/settings.sql b/module-services/service-db/agents/settings/settings.sql index 24664d0a2e976de3cf39b9b8d66536ae3c6bfcae..655a3152551583d5490e99f53d78e2a6f6753200 100644 --- a/module-services/service-db/agents/settings/settings.sql +++ b/module-services/service-db/agents/settings/settings.sql @@ -37,6 +37,24 @@ CREATE TABLE IF NOT EXISTS notifications_tab ( UNIQUE(path, service) ); +CREATE TABLE IF NOT EXISTS settings_changed_tab( + + id INTEGER PRIMARY KEY, + path TEXT NOT NULL, + value TEXT, + CONSTRAINT changed_unique + UNIQUE(path ) ON CONFLICT REPLACE +); + + +CREATE TRIGGER IF NOT EXISTS on_update UPDATE OF value ON settings_tab +WHEN new.value <> old.value + BEGIN + INSERT OR REPLACE INTO settings_changed_tab (path, value) VALUES (new.path,new.value); + END; + + + -- ----------- insert default values ---------------------- INSERT OR REPLACE INTO dictionary_tab (path, value) VALUES ('system/phone_mode', 'online'), diff --git a/module-services/service-db/workers/settings/settings_queries.hpp b/module-services/service-db/workers/settings/settings_queries.hpp new file mode 100644 index 0000000000000000000000000000000000000000..3c777c911d998b20ae0fb17577df27e457f738e8 --- /dev/null +++ b/module-services/service-db/workers/settings/settings_queries.hpp @@ -0,0 +1,81 @@ +#pragma once + +#include + +namespace Settings::Statements +{ + constexpr auto getValue = R"sql( + SELECT value + FROM settings_tab AS ST + WHERE ST.path = %q + COLLATE NOCASE; + )sql"; + + constexpr auto checkPathExists = R"sql( + SELECT COUNT(value) AS PATH_EXISTS FROM settings_tab AS ST + WHERE ST.path = %q + COLLATE NOCASE; + )sql"; + + constexpr auto CheckValueExistsInDictionary = R"sql( + SELECT COUNT(value) AS VALUE_EXISTS_IN_DICT FROM dictionary_tab AS DT + WHERE DT.path = %q + AND DT.value = %q + COLLATE NOCASE; + )sql"; + + constexpr auto checkSettingModified = R"sql( + SELECT COUNT(value) AS DATA_CHANGED FROM settings_tab AS ST + WHERE ST.path = %q + AND ST.value != %q COLLATE NOCASE ; + )sql"; + + constexpr auto insertValue = R"sql( + INSERT OR REPLACE INTO settings_tab (path, value) VALUES + ( %q, %q ) ; + )sql"; + + constexpr auto updateValue = R"sql( + UPDATE settings_tab SET value = %q WHERE path = %q ; + )sql"; + + constexpr auto clearSettingsChangedTable = R"sql( + DELETE FROM settings_changed_tab; + )sql"; + + constexpr auto clearSettingsChangedRow = R"sql( + DELETE FROM settings_changed_tab + WHERE path = %q ; + )sql"; + + constexpr auto getSettingsChangeTable = R"sql( + SELECT path, value FROM settings_changed_tab + COLLATE NOCASE; + )sql"; + + constexpr auto getSettingsChangeRow = R"sql( + SELECT path, value FROM settings_changed_tab + WHERE path = %q + COLLATE NOCASE; + )sql"; + + constexpr auto setNotification = R"sql( + INSERT OR REPLACE INTO notifications_tab (path, service) VALUES " + ( %q , %q ) ; + )sql"; + + constexpr auto getAllNotifications = R"sql( + SELECT path, service + FROM notifications_tab AS NT; + )sql"; + + constexpr auto clearNotificationTable = R"sql( + DELETE FROM notifications_tab; + )sql"; + + constexpr auto clearNotificationdRow = R"sql( + DELETE FROM notifications_tab + WHERE path = %q ; + )sql"; + +} // namespace Settings::Statements