Files
omnivore/packages/db/migrations/0046.do.create_group_tables.sql
2022-02-11 09:24:33 -08:00

55 lines
1.9 KiB
PL/PgSQL
Executable File

-- Type: DO
-- Name: create_group_tables
-- Description: Add tables for groups and group memberships
BEGIN;
CREATE TABLE omnivore.group (
id uuid PRIMARY KEY DEFAULT uuid_generate_v1mc(),
created_by_id uuid NOT NULL REFERENCES omnivore.user(id) ON DELETE CASCADE,
name text NOT NULL,
created_at timestamptz NOT NULL DEFAULT current_timestamp,
updated_at timestamptz NOT NULL DEFAULT current_timestamp
);
CREATE TRIGGER update_group_modtime BEFORE UPDATE ON omnivore.group FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
GRANT SELECT, INSERT ON omnivore.group TO omnivore_user;
CREATE TABLE omnivore.invite (
id uuid PRIMARY KEY DEFAULT uuid_generate_v1mc(),
group_id uuid NOT NULL REFERENCES omnivore.group(id) ON DELETE CASCADE,
created_by_id uuid NOT NULL REFERENCES omnivore.user(id) ON DELETE CASCADE,
code text NOT NULL,
max_members integer NOT NULL,
expiration_time timestamptz NOT NULL,
created_at timestamptz NOT NULL DEFAULT current_timestamp,
updated_at timestamptz NOT NULL DEFAULT current_timestamp
);
CREATE TRIGGER update_invite_modtime BEFORE UPDATE ON omnivore.invite FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
GRANT SELECT, INSERT ON omnivore.invite TO omnivore_user;
CREATE TABLE omnivore.group_membership (
id uuid PRIMARY KEY DEFAULT uuid_generate_v1mc(),
user_id uuid NOT NULL REFERENCES omnivore.user(id) ON DELETE CASCADE,
group_id uuid NOT NULL REFERENCES omnivore.group(id) ON DELETE CASCADE,
invite_id uuid NOT NULL REFERENCES omnivore.invite(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT current_timestamp,
updated_at timestamptz NOT NULL DEFAULT current_timestamp
);
CREATE TRIGGER update_group_membership_modtime BEFORE UPDATE ON omnivore.group_membership FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
GRANT SELECT, INSERT ON omnivore.group_membership TO omnivore_user;
COMMIT;