Add fuse callbacks
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -1,29 +1,29 @@
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
CREATE TABLE IF NOT EXISTS glyph_users (
|
||||
name TEXT PRIMARY KEY,
|
||||
display_name TEXT NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
email TEXT NOT NULL UNIQUE,
|
||||
disabled BOOLEAN NOT NULL,
|
||||
image TEXT,
|
||||
picture TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS groups (
|
||||
CREATE TABLE IF NOT EXISTS glyph_groups (
|
||||
name TEXT PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS users_groups (
|
||||
CREATE TABLE IF NOT EXISTS glyph_users_groups (
|
||||
user_name TEXT NOT NULL,
|
||||
group_name TEXT NOT NULL,
|
||||
PRIMARY KEY (user_name, group_name),
|
||||
FOREIGN KEY (user_name) REFERENCES users(name) ON DELETE CASCADE,
|
||||
FOREIGN KEY (group_name) REFERENCES groups(name) ON DELETE CASCADE
|
||||
FOREIGN KEY (user_name) REFERENCES glyph_users(name) ON DELETE CASCADE,
|
||||
FOREIGN KEY (group_name) REFERENCES glyph_groups(name) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE OR REPLACE FUNCTION update_timestamp()
|
||||
CREATE OR REPLACE FUNCTION glyph_update_timestamp()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = NOW();
|
||||
@@ -31,26 +31,26 @@ BEGIN
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER update_users_timestamp
|
||||
BEFORE UPDATE ON users
|
||||
CREATE OR REPLACE TRIGGER glyph_update_users_timestamp
|
||||
BEFORE UPDATE ON glyph_users
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_timestamp();
|
||||
EXECUTE FUNCTION glyph_update_timestamp();
|
||||
|
||||
CREATE TRIGGER update_groups_timestamp
|
||||
BEFORE UPDATE ON groups
|
||||
CREATE OR REPLACE TRIGGER glyph_update_groups_timestamp
|
||||
BEFORE UPDATE ON glyph_groups
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_timestamp();
|
||||
EXECUTE FUNCTION glyph_update_timestamp();
|
||||
|
||||
CREATE OR REPLACE FUNCTION update_users_groups_timestamp()
|
||||
CREATE OR REPLACE FUNCTION glyph_update_users_groups_timestamp()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
UPDATE users SET updated_at = NOW() WHERE name = NEW.user_name;
|
||||
UPDATE groups SET updated_at = NOW() WHERE name = NEW.group_name;
|
||||
UPDATE glyph_users SET updated_at = NOW() WHERE name = NEW.user_name;
|
||||
UPDATE glyph_groups SET updated_at = NOW() WHERE name = NEW.group_name;
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER update_users_groups_timestamp
|
||||
AFTER INSERT OR DELETE ON users_groups
|
||||
CREATE OR REPLACE TRIGGER glyph_update_users_groups_timestamp
|
||||
AFTER INSERT OR DELETE ON glyph_users_groups
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_users_groups_timestamp();
|
||||
EXECUTE FUNCTION glyph_update_users_groups_timestamp();
|
||||
|
Reference in New Issue
Block a user