Ajoute l'historique des versions des questions soumises par les Citoyens
Build and deploy / deploy (push) Successful in 35s
Build and deploy / deploy (push) Successful in 35s
Nouvelle table chariot_submission_history (append-only, comme points_log) : chariot_submissions ne garde que la valeur actuelle (upsert), donc sans ce journal les Archontes ne voyaient jamais les versions précédentes d'une question modifiée plusieurs fois. submit_chariot_question() y écrit désormais à chaque changement réel. Sur /char/questions, chaque suggestion affiche un lien "Historique (N)" (visible seulement si la personne a déjà modifié sa proposition) qui déplie les versions précédentes avec leur date.
This commit is contained in:
@@ -899,6 +899,37 @@ exception
|
||||
when duplicate_object then null;
|
||||
end $$;
|
||||
|
||||
-- Historique append-only (comme points_log) des versions successives d'une
|
||||
-- proposition : chariot_submissions ne garde que la valeur courante (upsert),
|
||||
-- donc sans ce journal les Archontes ne verraient jamais les versions
|
||||
-- précédentes d'une question modifiée plusieurs fois. Écrit uniquement par
|
||||
-- submit_chariot_question() (aucune policy insert, comme points_log).
|
||||
create table if not exists public.chariot_submission_history (
|
||||
id bigint generated always as identity primary key,
|
||||
user_id uuid not null references public.profiles (id) on delete cascade,
|
||||
text text not null,
|
||||
created_at timestamptz not null default now()
|
||||
);
|
||||
|
||||
alter table public.chariot_submission_history enable row level security;
|
||||
revoke insert, update, delete on public.chariot_submission_history from authenticated, anon;
|
||||
grant select on public.chariot_submission_history to authenticated;
|
||||
|
||||
drop policy if exists "chariot_submission_history readable by owner or judges" on public.chariot_submission_history;
|
||||
create policy "chariot_submission_history readable by owner or judges"
|
||||
on public.chariot_submission_history for select to authenticated
|
||||
using (
|
||||
user_id = auth.uid()
|
||||
or exists (select 1 from public.profiles p where p.id = auth.uid() and p.role = 'judge')
|
||||
);
|
||||
|
||||
do $$
|
||||
begin
|
||||
alter publication supabase_realtime add table public.chariot_submission_history;
|
||||
exception
|
||||
when duplicate_object then null;
|
||||
end $$;
|
||||
|
||||
-- Seul point d'entrée pour proposer/modifier sa question. Réutilise
|
||||
-- settings.tribunal_date comme déclencheur de gel — même philosophie que
|
||||
-- submit_icarus_score() : une fois l'Agora commencée, no-op silencieux
|
||||
@@ -943,6 +974,9 @@ begin
|
||||
set text = excluded.text,
|
||||
updated_at = now();
|
||||
|
||||
insert into public.chariot_submission_history (user_id, text)
|
||||
values (auth.uid(), trim(p_text));
|
||||
|
||||
select * into v_row from public.chariot_submissions where user_id = auth.uid();
|
||||
return v_row;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user