2019-01-27 09:53:34 +08:00
|
|
|
|
2019-02-16 13:02:50 +08:00
|
|
|
CREATE TABLE IF NOT EXISTS "user" (
|
2019-01-27 09:53:34 +08:00
|
|
|
id BYTEA PRIMARY KEY,
|
2019-09-28 23:01:36 +08:00
|
|
|
username VARCHAR(63555) UNIQUE,
|
2019-08-31 15:46:56 +08:00
|
|
|
bio VARCHAR(63535) DEFAULT '',
|
|
|
|
profile_pic VARCHAR(63535) DEFAULT '',
|
|
|
|
first_name VARCHAR(65535) DEFAULT '',
|
|
|
|
last_name VARCHAR(65535) DEFAULT '',
|
2019-01-27 09:53:34 +08:00
|
|
|
phone_number VARCHAR(32) UNIQUE
|
|
|
|
);
|
|
|
|
|
2019-02-16 13:02:50 +08:00
|
|
|
CREATE TABLE IF NOT EXISTS "conversation" (
|
2019-01-27 09:53:34 +08:00
|
|
|
id BYTEA PRIMARY KEY,
|
2019-07-02 23:16:03 +08:00
|
|
|
title VARCHAR(65535),
|
2019-07-27 23:03:05 +08:00
|
|
|
picture VARCHAR(63535)
|
2019-01-27 09:53:34 +08:00
|
|
|
);
|
|
|
|
|
2019-02-16 13:02:50 +08:00
|
|
|
CREATE TABLE IF NOT EXISTS member (
|
2019-01-27 09:53:34 +08:00
|
|
|
"user" BYTEA REFERENCES "user"(id),
|
|
|
|
"conversation" BYTEA REFERENCES "conversation"(id),
|
2019-08-11 11:06:19 +08:00
|
|
|
"pinned" BOOLEAN DEFAULT FALSE,
|
2019-01-27 09:53:34 +08:00
|
|
|
UNIQUE ("user", "conversation")
|
|
|
|
);
|
|
|
|
|
2019-02-16 13:02:50 +08:00
|
|
|
CREATE TABLE IF NOT EXISTS contact (
|
2019-01-27 09:53:34 +08:00
|
|
|
"user" BYTEA REFERENCES "user"(id),
|
|
|
|
contact BYTEA REFERENCES "user"(id),
|
|
|
|
UNIQUE ("user", contact)
|
|
|
|
);
|
2019-06-22 18:49:45 +08:00
|
|
|
|
2019-07-27 23:03:05 +08:00
|
|
|
CREATE TABLE IF NOT EXISTS pinned_conversation (
|
|
|
|
"user" BYTEA REFERENCES "user"(id),
|
|
|
|
"conversation" BYTEA REFERENCES "conversation"(id),
|
|
|
|
UNIQUE ("user", "conversation")
|
|
|
|
);
|
|
|
|
|
2019-06-22 18:49:45 +08:00
|
|
|
CREATE OR REPLACE FUNCTION notify_permissions_new () RETURNS TRIGGER AS $$
|
2019-07-27 23:03:05 +08:00
|
|
|
BEGIN
|
|
|
|
PERFORM pg_notify('member_new', CONCAT(NEW."user", '+', NEW."conversation"));
|
|
|
|
RETURN NULL;
|
|
|
|
END;
|
2019-06-22 18:49:45 +08:00
|
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION notify_permissions_delete () RETURNS TRIGGER AS $$
|
2019-07-27 23:03:05 +08:00
|
|
|
BEGIN
|
|
|
|
PERFORM pg_notify('member_delete', CONCAT(OLD."user", '+', OLD."conversation"));
|
|
|
|
RETURN NULL;
|
|
|
|
END;
|
2019-06-22 18:49:45 +08:00
|
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
|
|
|
|
CREATE TRIGGER notify_permissions_new
|
2019-07-27 23:03:05 +08:00
|
|
|
AFTER INSERT OR UPDATE
|
|
|
|
ON "member"
|
|
|
|
FOR EACH ROW
|
|
|
|
EXECUTE PROCEDURE notify_permissions_new();
|
2019-06-22 18:49:45 +08:00
|
|
|
|
|
|
|
CREATE TRIGGER notify_permissions_delete
|
2019-07-27 23:03:05 +08:00
|
|
|
AFTER DELETE
|
|
|
|
ON "member"
|
|
|
|
FOR EACH ROW
|
|
|
|
EXECUTE PROCEDURE notify_permissions_delete();
|