Shuffle/supabase/migrations/20261102100000_base.sql
cschlaefke 317634dac5
Some checks are pending
CI / flutter (push) Waiting to run
CI / supabase (push) Waiting to run
CI / supabase-tests (push) Waiting to run
chore: initial project kit
2026-11-02 12:14:09 +01:00

28 lines
825 B
PL/PgSQL

-- R1 Basis: gemeinsame Hilfsfunktionen für alle Tabellen.
-- Jede Tabelle hat: id (uuid, PK), created_at, updated_at.
-- Setzt updated_at bei jeder Änderung und schützt id und created_at vor Änderungen.
-- Der Client kann diese drei Spalten damit nie verfälschen.
create or replace function public.set_updated_at()
returns trigger
language plpgsql
set search_path = ''
as $$
begin
new.id := old.id;
new.created_at := old.created_at;
new.updated_at := now();
return new;
end;
$$;
-- Admin-Rolle kommt aus app_metadata des JWT. Das kann nur serverseitig gesetzt werden,
-- nie vom Client (anders als user_metadata).
create or replace function public.is_admin()
returns boolean
language sql
stable
set search_path = ''
as $$
select coalesce((select auth.jwt()) -> 'app_metadata' ->> 'role', '') = 'admin';
$$;