db/schema/021_community.sql
Orion Kindel 0502154f4d
Some checks failed
migrate-stage / migrate-stage (push) Failing after 25s
migrate-devel / migrate-devel (push) Failing after 9s
feat: usr_session
2023-07-02 17:11:51 -05:00

121 lines
3.9 KiB
SQL

select create_newtype_text('public.community_tag');
create table public.community
( id int not null primary key generated always as identity
, uid uuid not null unique default gen_random_uuid()
, deleted boolean not null default false
, tag public.community_tag not null
);
select audit( 'public'
, 'community'
, array[ row('tag', 'public.community_tag')
] :: audited_column[]
, soft_delete => true
);
select immutable( 'public'
, 'community'
, array[ 'id'
, 'uid'
]
);
create table public.community_nonmember_scope
( id int not null primary key generated always as identity
, uid uuid not null unique default gen_random_uuid()
, community int not null references public.community (id)
, scope public.authz_scope not null
, unique (community, scope)
);
select audit( 'public'
, 'community_nonmember_scope'
, array[ row('community', 'int')
, row('scope', 'public.authz_scope')
] :: audited_column[]
, soft_delete => false
);
select immutable( 'public'
, 'community_nonmember_scope'
, array[ 'id'
, 'uid'
, 'community'
, 'scope'
]
);
create table public.community_member_role
( id int not null primary key generated always as identity
, uid uuid not null unique default gen_random_uuid()
, community int not null references public.community (id)
, title text not null
, description text not null
);
select audit( 'public'
, 'community_member_role'
, array[ row('title', 'text')
, row('description', 'text')
] :: audited_column[]
, soft_delete => false
);
select immutable( 'public'
, 'community_member_role'
, array[ 'id'
, 'uid'
, 'community'
]
);
create table public.community_member_role_scope
( id int not null primary key generated always as identity
, uid uuid not null unique default gen_random_uuid()
, role_ int not null references public.community_member_role (id)
, scope public.authz_scope not null
, unique (scope, role_)
);
select audit( 'public'
, 'community_member_role_scope'
, array[ row('role_', 'int')
, row('scope', 'public.authz_scope')
] :: audited_column[]
, soft_delete => false
);
select immutable( 'public'
, 'community_member_role_scope'
, array[ 'id'
, 'uid'
, 'role_'
, 'scope'
]
);
create table public.community_member
( id int not null primary key generated always as identity
, uid uuid not null unique default gen_random_uuid()
, usr int not null references public.usr (id)
, community int not null references public.community (id)
, role_ int not null references public.community_member_role (id)
);
select audit( 'public'
, 'community_member'
, array[ row('usr', 'int')
, row('role_', 'int')
] :: audited_column[]
, soft_delete => false
);
select immutable( 'public'
, 'community_member'
, array[ 'id'
, 'uid'
, 'usr'
]
);