Imporove datamodel

Tables now contain update_timestamp and update_process and
update_timestamp will be automatically set via a trigger.
Also the I removed the IDs from the tables as they are not
required for the auth system.  The names are the identifier.
This commit is contained in:
Simon Goller 2024-04-26 22:30:10 +02:00
parent dccfa2d4cf
commit 789981ee92
2 changed files with 49 additions and 15 deletions

View file

@ -1,29 +1,63 @@
-- Add migration script here
CREATE TABLE user (
id BLOB(16) NOT NULL PRIMARY KEY,
name TEXT NOT NULL
name TEXT NOT NULL PRIMARY KEY,
update_timestamp TEXT,
update_process TEXT NOT NULL
);
CREATE TRIGGER user_update_timestamp
AFTER UPDATE ON user
BEGIN
UPDATE user SET update_timestamp = DATETIME('now') WHERE rowid = old.rowid;
END;
CREATE TABLE role (
id BLOB(16) NOT NULL PRIMARY KEY,
name TEXT NOT NULL
name TEXT NOT NULL PRIMARY KEY,
update_timestamp TEXT,
update_process TEXT NOT NULL
);
CREATE TRIGGER role_update_timestamp
AFTER UPDATE ON role
BEGIN
UPDATE role SET update_timestamp = DATETIME('now') WHERE rowid = old.rowid;
END;
CREATE TABLE privilege (
name TEXT NOT NULL PRIMARY KEY
name TEXT NOT NULL PRIMARY KEY,
update_timestamp TEXT,
update_process TEXT NOT NULL
);
CREATE TRIGGER privilege_update_timestamp
AFTER UPDATE ON privilege
BEGIN
UPDATE privilege SET update_timestamp = DATETIME('now') WHERE rowid = old.rowid;
END;
CREATE TABLE user_role (
user_id BLOB(16) NOT NULL,
role_id BLOB(16) NOT NULL,
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE,
CONSTRAINT fk_role FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE CASCADE
user_name TEXT NOT NULL,
role_name TEXT NOT NULL,
update_timestamp TEXT,
update_process TEXT NOT NULL,
CONSTRAINT fk_user FOREIGN KEY (user_name) REFERENCES user(name) ON DELETE CASCADE,
CONSTRAINT fk_role FOREIGN KEY (role_name) REFERENCES role(name) ON DELETE CASCADE
UNIQUE (user_name, role_name)
);
CREATE TRIGGER user_role_update_timestamp
AFTER UPDATE ON user_role
BEGIN
UPDATE user_role SET update_timestamp = DATETIME('now') WHERE rowid = old.rowid;
END;
CREATE TABLE role_privilege (
role_id BLOB(16) NOT NULL,
role_name TEXT NOT NULL,
privilege_name TEXT NOT NULL,
CONSTRAINT fk_group FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE CASCADE,
update_timestamp TEXT,
update_process TEXT NOT NULL,
CONSTRAINT fk_group FOREIGN KEY (role_name) REFERENCES role(name) ON DELETE CASCADE,
CONSTRAINT fk_privilege FOREIGN KEY (privilege_name) REFERENCES privilege(name) ON DELETE CASCADE
UNIQUE (role_name, privilege_name)
);
CREATE TRIGGER role_privilege_update_timestamp
AFTER UPDATE ON role_privilege
BEGIN
UPDATE role_privilege SET update_timestamp = DATETIME('now') WHERE rowid = old.rowid;
END;