M changelog.md => changelog.md +1 -1
@@ 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
M module-services/service-db/agents/settings/settings.sql => module-services/service-db/agents/settings/settings.sql +18 -0
@@ 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'),
A module-services/service-db/workers/settings/settings_queries.hpp => module-services/service-db/workers/settings/settings_queries.hpp +81 -0
@@ 0,0 1,81 @@
+#pragma once
+
+#include <log/log.hpp>
+
+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