owpengram-server/deploy/migrations/0040_discard_empty_conferences.up.sql

31 lines
883 B
SQL

WITH stale AS (
SELECT c.call_id
FROM public.group_calls c
WHERE c.kind = 'conference'::text
AND c.state = 'active'::text
AND EXISTS (
SELECT 1
FROM public.group_call_participants p
WHERE p.call_id = c.call_id
)
AND NOT EXISTS (
SELECT 1
FROM public.group_call_participants p
WHERE p.call_id = c.call_id
AND NOT p.left_call
)
)
UPDATE public.group_calls c
SET state = 'discarded'::text,
discarded_at = CASE
WHEN c.discarded_at = 0 THEN EXTRACT(EPOCH FROM now())::integer
ELSE c.discarded_at
END,
duration = CASE
WHEN c.duration = 0 THEN GREATEST(0, EXTRACT(EPOCH FROM now())::integer - c.created_at)
ELSE c.duration
END,
participants_count = 0,
version = c.version + 1
FROM stale
WHERE c.call_id = stale.call_id;