58 lines
2.6 KiB
SQL
58 lines
2.6 KiB
SQL
ALTER TABLE public.group_calls
|
|
ADD COLUMN IF NOT EXISTS kind text DEFAULT 'channel'::text NOT NULL,
|
|
ADD COLUMN IF NOT EXISTS invite_slug text DEFAULT ''::text NOT NULL,
|
|
ADD COLUMN IF NOT EXISTS invite_link text DEFAULT ''::text NOT NULL,
|
|
ADD COLUMN IF NOT EXISTS random_id bigint DEFAULT 0 NOT NULL,
|
|
ADD COLUMN IF NOT EXISTS migrated_from_phone_call_id bigint DEFAULT 0 NOT NULL;
|
|
|
|
ALTER TABLE public.group_calls
|
|
DROP CONSTRAINT IF EXISTS group_calls_kind_check;
|
|
|
|
ALTER TABLE public.group_calls
|
|
ADD CONSTRAINT group_calls_kind_check CHECK (kind = ANY (ARRAY['channel'::text, 'conference'::text]));
|
|
|
|
ALTER TABLE public.group_call_participants
|
|
ADD COLUMN IF NOT EXISTS public_key bytea,
|
|
ADD COLUMN IF NOT EXISTS join_block bytea;
|
|
|
|
DROP INDEX IF EXISTS public.group_calls_active_channel_uniq;
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS group_calls_active_channel_uniq
|
|
ON public.group_calls USING btree (channel_id)
|
|
WHERE ((state = 'active'::text) AND (channel_id <> 0));
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS group_calls_invite_slug_uniq
|
|
ON public.group_calls USING btree (invite_slug)
|
|
WHERE (invite_slug <> ''::text);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS group_calls_conference_random_uniq
|
|
ON public.group_calls USING btree (creator_user_id, random_id)
|
|
WHERE ((kind = 'conference'::text) AND (random_id <> 0));
|
|
|
|
CREATE TABLE IF NOT EXISTS public.group_call_invites (
|
|
call_id bigint NOT NULL REFERENCES public.group_calls(call_id) ON DELETE CASCADE,
|
|
inviter_user_id bigint NOT NULL,
|
|
invitee_user_id bigint NOT NULL,
|
|
message_id integer NOT NULL,
|
|
status text DEFAULT 'pending'::text NOT NULL,
|
|
video boolean DEFAULT false NOT NULL,
|
|
created_at integer NOT NULL,
|
|
updated_at integer DEFAULT 0 NOT NULL,
|
|
CONSTRAINT group_call_invites_status_check CHECK (status = ANY (ARRAY['pending'::text, 'accepted'::text, 'declined'::text, 'missed'::text, 'revoked'::text])),
|
|
CONSTRAINT group_call_invites_pkey PRIMARY KEY (call_id, invitee_user_id, message_id)
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS group_call_invites_msg_uniq
|
|
ON public.group_call_invites USING btree (invitee_user_id, message_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS group_call_invites_call_idx
|
|
ON public.group_call_invites USING btree (call_id, invitee_user_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS public.group_call_chain_blocks (
|
|
call_id bigint NOT NULL REFERENCES public.group_calls(call_id) ON DELETE CASCADE,
|
|
sub_chain_id integer DEFAULT 0 NOT NULL,
|
|
block_offset integer NOT NULL,
|
|
block bytea NOT NULL,
|
|
created_at integer NOT NULL,
|
|
CONSTRAINT group_call_chain_blocks_pkey PRIMARY KEY (call_id, sub_chain_id, block_offset)
|
|
);
|