AT SETTING
Материал из GedeminWiki
CREATE TABLE at_setting ( id dintkey NOT NULL, /* идентификатор */ name dname NOT NULL /* наименование настройки */ COLLATE PXW_CYRL, DATA DBLOB4096, /* данные объекта, сохраненные в поток */ storagedata DBLOB4096, /* данные хранилища, сохраненные в поток */ disabled dboolean DEFAULT 0,/* активная / неактивная настройка */ modifydate dtimestamp, /* дата сохранения настройки в базу */ settingsruid dblobtext80_1251, /* хранит руиды настроек, от которых зависит данная натсройка*/ version dinteger, /* версия настройки, возрастает при каждом сохранении настройки в базу */ minexeversion dtext20, /* min версия Exe-файла для работы настройки */ mindbversion dtext20, /* min версия БД для работы настройки */ ending dboolean, /* конечная/промежуточная настройка */ description dtext255 /* описание настройки */ );
Поле settingsruid хранит разделенный запятыми список РУИДов настроек от которых зависит данная настройка. Просмотреть зависимость настроек одна от другой в древовидном виде можно с помощью запроса:
WITH RECURSIVE sett_tree AS ( SELECT s.id, s.id AS orig_id, CAST(NULL AS INTEGER) AS parent, s.name, s.settingsruid, 0 AS lvl FROM at_setting s WHERE NOT EXISTS (SELECT s2.* FROM at_setting s2 WHERE POSITION((SELECT xid || '_' || dbid FROM gd_ruid WHERE id = s.id) IN s2.SETTINGSRUID) > 0) UNION ALL SELECT s.id + ROUND(RAND() * 100000000), S.ID AS orig_id, h.id, s.name, s.settingsruid, (H.LVL + 1) AS lvl FROM at_setting s JOIN sett_tree h ON POSITION((SELECT xid || '_' || dbid FROM gd_ruid WHERE id = s.id) IN h.SETTINGSRUID) > 0 WHERE h.lvl < 8 ) SELECT * FROM sett_tree