Skip to content
代码片段 群组 项目
提交 c285fca5 编辑于 作者: Timotej Ecimovic's avatar Timotej Ecimovic
浏览文件

Clean up the schema in add the missing triggers in prep for configuration work.

上级 dbb8aadd
No related branches found
No related tags found
无相关合并请求
......@@ -377,6 +377,7 @@ CREATE TABLE IF NOT EXISTS "DEVICE_TYPE_COMMAND" (
* \$$$$$$ |\$$$$$$$\ $$$$$$$ |$$$$$$$ |$$ |\$$$$$$ |$$ | $$ | \$$$$$$$ |\$$$$$$$ | \$$$$ |\$$$$$$$ |
* \______/ \_______|\_______/ \_______/ \__| \______/ \__| \__| \_______| \_______| \____/ \_______|
*/
/*
SESSION table contains the list of known and remembered sessions.
In case of electron SESSION_WINID is the window ID for a given
......@@ -390,20 +391,7 @@ CREATE TABLE IF NOT EXISTS "SESSION" (
"DIRTY" integer default 1,
UNIQUE(SESSION_KEY)
);
/*
SESSION_PACKAGE table is a junction table, listing which packages
are used for a given session.
*/
DROP TABLE IF EXISTS "SESSION_PACKAGE";
CREATE TABLE IF NOT EXISTS "SESSION_PACKAGE" (
"SESSION_REF" integer,
"PACKAGE_REF" integer,
"REQUIRED" integer default false,
"ENABLED" integer default true,
foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade,
foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID) on delete cascade,
UNIQUE(SESSION_REF, PACKAGE_REF)
);
/*
SESSION_KEY_VALUE table contains the data points that are simple
key/value pairs.
......@@ -416,6 +404,30 @@ CREATE TABLE IF NOT EXISTS "SESSION_KEY_VALUE" (
foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade,
UNIQUE(SESSION_REF, KEY)
);
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_SESSION_KEY_VALUE"
AFTER
INSERT ON "SESSION_KEY_VALUE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_SESSION_KEY_VALUE"
AFTER
UPDATE ON "SESSION_KEY_VALUE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_SESSION_KEY_VALUE"
AFTER DELETE ON "SESSION_KEY_VALUE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = OLD.SESSION_REF;
END;
/*
SESSION_LOG table contains general purpose text log for the session
*/
......@@ -426,6 +438,44 @@ CREATE TABLE IF NOT EXISTS "SESSION_LOG" (
"LOG" text,
foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade
);
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_SESSION_LOG"
AFTER
INSERT ON "SESSION_LOG" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_SESSION_LOG"
AFTER
UPDATE ON "SESSION_LOG" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_SESSION_LOG"
AFTER DELETE ON "SESSION_LOG" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = OLD.SESSION_REF;
END;
/*
SESSION_PACKAGE table is a junction table, listing which packages
are used for a given session.
*/
DROP TABLE IF EXISTS "SESSION_PACKAGE";
CREATE TABLE IF NOT EXISTS "SESSION_PACKAGE" (
"SESSION_REF" integer,
"PACKAGE_REF" integer,
"REQUIRED" integer default false,
"ENABLED" integer default true,
foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade,
foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID) on delete cascade,
UNIQUE(SESSION_REF, PACKAGE_REF)
);
/*
ENDPOINT_TYPE contains the bulk of the configuration: clusters, attributes, etc.
*/
......@@ -438,6 +488,30 @@ CREATE TABLE IF NOT EXISTS "ENDPOINT_TYPE" (
foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade,
foreign key(DEVICE_TYPE_REF) references DEVICE_TYPE(DEVICE_TYPE_ID)
);
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT_TYPE"
AFTER
INSERT ON "ENDPOINT_TYPE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT_TYPE"
AFTER
UPDATE ON "ENDPOINT_TYPE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT_TYPE"
AFTER DELETE ON "ENDPOINT_TYPE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = OLD.SESSION_REF;
END;
/*
ENDPOINT table contains the toplevel configured endpoints.
*/
......@@ -453,6 +527,30 @@ CREATE TABLE IF NOT EXISTS "ENDPOINT" (
foreign key (ENDPOINT_TYPE_REF) references ENDPOINT_TYPE(ENDPOINT_TYPE_ID) on delete
set NULL
);
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT"
AFTER
INSERT ON "ENDPOINT" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT"
AFTER
UPDATE ON "ENDPOINT" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT"
AFTER DELETE ON "ENDPOINT" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = OLD.SESSION_REF;
END;
/*
SESSION_CLUSTER contains the on/off values for cluster.
SIDE is client or server
......@@ -469,6 +567,42 @@ CREATE TABLE IF NOT EXISTS "ENDPOINT_TYPE_CLUSTER" (
foreign key (CLUSTER_REF) references CLUSTER(CLUSTER_ID),
UNIQUE(ENDPOINT_TYPE_REF, CLUSTER_REF, SIDE)
);
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT_TYPE_CLUSTER"
AFTER
INSERT ON "ENDPOINT_TYPE_CLUSTER" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = (
SELECT SESSION_REF
FROM ENDPOINT_TYPE
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT_TYPE_CLUSTER"
AFTER
UPDATE ON "ENDPOINT_TYPE_CLUSTER" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = (
SELECT SESSION_REF
FROM ENDPOINT_TYPE
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT_TYPE_CLUSTER"
AFTER DELETE ON "ENDPOINT_TYPE_CLUSTER" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = (
SELECT SESSION_REF
FROM ENDPOINT_TYPE
WHERE ENDPOINT_TYPE_ID = OLD.ENDPOINT_TYPE_REF
);
END;
/*
ENDPOINT_TYPE_ATTRIBUTE table contains the user data configuration for the various parameters that exist
for an attribute on an endpoint. This essentially lets you determine if something should be included or not.
......@@ -497,41 +631,7 @@ CREATE TABLE IF NOT EXISTS "ENDPOINT_TYPE_ATTRIBUTE" (
ENDPOINT_TYPE_CLUSTER_REF
)
);
/*
ENDPOINT_TYPE_COMMAND table contains the user data configuration for the various parameters that exist
for commands on an endpoint. This essentially lets you determine if something should be included or not.
*/
DROP TABLE IF EXISTS "ENDPOINT_TYPE_COMMAND";
CREATE TABLE IF NOT EXISTS "ENDPOINT_TYPE_COMMAND" (
"ENDPOINT_TYPE_COMMAND_ID" integer primary key autoincrement,
"ENDPOINT_TYPE_REF" integer,
"ENDPOINT_TYPE_CLUSTER_REF" integer,
"COMMAND_REF" integer,
"INCOMING" integer default false,
"OUTGOING" integer default false,
foreign key (ENDPOINT_TYPE_REF) references ENDPOINT_TYPE(ENDPOINT_TYPE_ID) on delete cascade,
foreign key (ENDPOINT_TYPE_CLUSTER_REF) references ENDPOINT_TYPE_CLUSTER(ENDPOINT_TYPE_CLUSTER_ID),
foreign key (COMMAND_REF) references COMMAND(COMMAND_ID),
UNIQUE(
ENDPOINT_TYPE_REF,
COMMAND_REF,
ENDPOINT_TYPE_CLUSTER_REF
)
);
/*
*
* $$$$$$$$\ $$\
* \__$$ __| \__|
* $$ | $$$$$$\ $$\ $$$$$$\ $$$$$$\ $$$$$$\ $$$$$$\ $$$$$$$\
* $$ |$$ __$$\ $$ |$$ __$$\ $$ __$$\ $$ __$$\ $$ __$$\ $$ _____|
* $$ |$$ | \__|$$ |$$ / $$ |$$ / $$ |$$$$$$$$ |$$ | \__|\$$$$$$\
* $$ |$$ | $$ |$$ | $$ |$$ | $$ |$$ ____|$$ | \____$$\
* $$ |$$ | $$ |\$$$$$$$ |\$$$$$$$ |\$$$$$$$\ $$ | $$$$$$$ |
* \__|\__| \__| \____$$ | \____$$ | \_______|\__| \_______/
* $$\ $$ |$$\ $$ |
* \$$$$$$ |\$$$$$$ |
* \______/ \______/
*/
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT_TYPE_ATTRIBUTE"
AFTER
INSERT ON "ENDPOINT_TYPE_ATTRIBUTE" BEGIN
......@@ -543,6 +643,7 @@ WHERE SESSION_ID = (
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT_TYPE_ATTRIBUTE"
AFTER
UPDATE ON "ENDPOINT_TYPE_ATTRIBUTE" BEGIN
......@@ -554,6 +655,7 @@ WHERE SESSION_ID = (
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT_TYPE_ATTRIBUTE"
AFTER DELETE ON "ENDPOINT_TYPE_ATTRIBUTE" BEGIN
UPDATE SESSION
......@@ -564,6 +666,29 @@ WHERE SESSION_ID = (
WHERE ENDPOINT_TYPE_ID = OLD.ENDPOINT_TYPE_REF
);
END;
/*
ENDPOINT_TYPE_COMMAND table contains the user data configuration for the various parameters that exist
for commands on an endpoint. This essentially lets you determine if something should be included or not.
*/
DROP TABLE IF EXISTS "ENDPOINT_TYPE_COMMAND";
CREATE TABLE IF NOT EXISTS "ENDPOINT_TYPE_COMMAND" (
"ENDPOINT_TYPE_COMMAND_ID" integer primary key autoincrement,
"ENDPOINT_TYPE_REF" integer,
"ENDPOINT_TYPE_CLUSTER_REF" integer,
"COMMAND_REF" integer,
"INCOMING" integer default false,
"OUTGOING" integer default false,
foreign key (ENDPOINT_TYPE_REF) references ENDPOINT_TYPE(ENDPOINT_TYPE_ID) on delete cascade,
foreign key (ENDPOINT_TYPE_CLUSTER_REF) references ENDPOINT_TYPE_CLUSTER(ENDPOINT_TYPE_CLUSTER_ID),
foreign key (COMMAND_REF) references COMMAND(COMMAND_ID),
UNIQUE(
ENDPOINT_TYPE_REF,
COMMAND_REF,
ENDPOINT_TYPE_CLUSTER_REF
)
);
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT_TYPE_COMMAND"
AFTER
INSERT ON "ENDPOINT_TYPE_COMMAND" BEGIN
......@@ -575,6 +700,7 @@ WHERE SESSION_ID = (
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT_TYPE_COMMAND"
AFTER
UPDATE ON "ENDPOINT_TYPE_COMMAND" BEGIN
......@@ -586,6 +712,7 @@ WHERE SESSION_ID = (
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT_TYPE_COMMAND"
AFTER DELETE ON "ENDPOINT_TYPE_COMMAND" BEGIN
UPDATE SESSION
......@@ -596,98 +723,7 @@ WHERE SESSION_ID = (
WHERE ENDPOINT_TYPE_ID = OLD.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT_TYPE_CLUSTER"
AFTER
INSERT ON "ENDPOINT_TYPE_CLUSTER" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = (
SELECT SESSION_REF
FROM ENDPOINT_TYPE
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT_TYPE_CLUSTER"
AFTER
UPDATE ON "ENDPOINT_TYPE_CLUSTER" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = (
SELECT SESSION_REF
FROM ENDPOINT_TYPE
WHERE ENDPOINT_TYPE_ID = NEW.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT_TYPE_CLUSTER"
AFTER DELETE ON "ENDPOINT_TYPE_CLUSTER" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = (
SELECT SESSION_REF
FROM ENDPOINT_TYPE
WHERE ENDPOINT_TYPE_ID = OLD.ENDPOINT_TYPE_REF
);
END;
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT_TYPE"
AFTER
INSERT ON "ENDPOINT_TYPE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT_TYPE"
AFTER
UPDATE ON "ENDPOINT_TYPE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT_TYPE"
AFTER DELETE ON "ENDPOINT_TYPE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = OLD.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_ENDPOINT"
AFTER
INSERT ON "ENDPOINT" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_ENDPOINT"
AFTER
UPDATE ON "ENDPOINT" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_ENDPOINT"
AFTER DELETE ON "ENDPOINT" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = OLD.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "INSERT_TRIGGER_SESSION_KEY_VALUE"
AFTER
INSERT ON "SESSION_KEY_VALUE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "UPDATE_TRIGGER_SESSION_KEY_VALUE"
AFTER
UPDATE ON "SESSION_KEY_VALUE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = NEW.SESSION_REF;
END;
CREATE TRIGGER IF NOT EXISTS "DELETE_TRIGGER_SESSION_KEY_VALUE"
AFTER DELETE ON "SESSION_KEY_VALUE" BEGIN
UPDATE SESSION
SET DIRTY = 1
WHERE SESSION_ID = OLD.SESSION_REF;
END;
/*
*
* $$$$$$\ $$\ $$\ $$\ $$\ $$\
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册