owpengram-server/deploy/migrations/0037_conference_calls.up.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)
);