-- ===================================================================== -- GameDev Tracker — Migration v2 -- À exécuter UNE FOIS dans : Supabase > SQL Editor > New query -- (pour une base déjà créée avec schema.sql v1) -- -- Contenu : -- • Suppression des JALONS (milestones) -- • Notion de PÔLE sur les tâches et les bugs -- • Plusieurs personnes assignables sur une tâche (assignee_ids) -- • Système de NOTIFICATIONS (assignation à un pôle) -- ===================================================================== -- ---------- Pôle sur tâches & bugs (réutilise l'enum member_role) ----- alter table public.tasks add column if not exists pole member_role; alter table public.bugs add column if not exists pole member_role; -- ---------- Plusieurs assignés par tâche ----------------------------- alter table public.tasks add column if not exists assignee_ids uuid[] not null default '{}'; -- Reprend l'assigné unique existant dans le nouveau tableau. update public.tasks set assignee_ids = array[assignee_id] where assignee_id is not null and (assignee_ids is null or assignee_ids = '{}'); alter table public.tasks drop column if exists assignee_id; -- ---------- Suppression des jalons ----------------------------------- alter table public.tasks drop column if exists milestone_id; drop table if exists public.milestones cascade; drop type if exists milestone_status; -- ---------- Notifications -------------------------------------------- create table if not exists public.notifications ( id uuid primary key default gen_random_uuid(), user_id uuid not null references public.profiles(id) on delete cascade, project_id uuid references public.projects(id) on delete cascade, kind text not null, -- 'task' | 'bug' title text not null, -- ex : « Nouvelle tâche » body text, -- titre de la tâche / du bug entity_id uuid, -- id de la tâche / du bug pole member_role, -- pôle destinataire read boolean not null default false, created_at timestamptz not null default now() ); create index if not exists idx_notifications_user on public.notifications(user_id); alter table public.notifications enable row level security; -- Chacun lit/modifie SES notifications ; l'insertion est ouverte à tout -- membre connecté (afin de notifier les autres membres d'un pôle). drop policy if exists notifications_select on public.notifications; drop policy if exists notifications_insert on public.notifications; drop policy if exists notifications_update on public.notifications; drop policy if exists notifications_delete on public.notifications; create policy notifications_select on public.notifications for select to authenticated using (user_id = auth.uid()); create policy notifications_insert on public.notifications for insert to authenticated with check (true); create policy notifications_update on public.notifications for update to authenticated using (user_id = auth.uid()) with check (user_id = auth.uid()); create policy notifications_delete on public.notifications for delete to authenticated using (user_id = auth.uid()); do $$ begin alter publication supabase_realtime add table public.notifications; exception when duplicate_object then null; end $$;