Einmalig durchführen – danach startet die App direkt.
Schritt 1 – Datenbank anlegen
Im Supabase Dashboard → SQL Editor → diesen Code einfügen → Run:
-- Mitarbeiter
create table if not exists mitarbeiter (
id uuid default gen_random_uuid() primary key,
email text unique not null,
name text not null,
rolle text default 'mitarbeiter',
passwort_hash text,
wochensoll_stunden numeric(4,2) default 40,
urlaub_tage_pro_jahr int default 25,
eintrittsdatum date,
erfassung_ab date,
startsaldo_stunden numeric(6,2) default 0,
startsaldo_urlaub numeric(4,1) default 0,
aktiv boolean default true,
erstellt_am timestamptz default now()
);
-- Wochendienstplan
create table if not exists dienstplan (
id uuid default gen_random_uuid() primary key,
mitarbeiter_id uuid references mitarbeiter(id) on delete cascade,
wochentag int not null, -- 1=Mo, 2=Di, 3=Mi, 4=Do, 5=Fr, 6=Sa, 0=So
start_zeit time,
end_zeit time,
pause_minuten int default 0,
aktiv boolean default true
);
-- Zeiteinträge
create table if not exists zeiteintraege (
id uuid default gen_random_uuid() primary key,
mitarbeiter_id uuid references mitarbeiter(id) on delete cascade,
datum date not null,
typ text not null,
start_zeit time,
end_zeit time,
pause_minuten int default 0,
effektive_minuten numeric(6,2) default 0,
notiz text,
erstellt_am timestamptz default now()
);
-- Sicherheit
alter table mitarbeiter enable row level security;
alter table dienstplan enable row level security;
alter table zeiteintraege enable row level security;
create policy "r_ma" on mitarbeiter for select using (true);
create policy "w_ma" on mitarbeiter for insert with check (true);
create policy "u_ma" on mitarbeiter for update using (true);
create policy "del_ma" on mitarbeiter for delete using (true);
create policy "r_dp" on dienstplan for select using (true);
create policy "w_dp" on dienstplan for insert with check (true);
create policy "u_dp" on dienstplan for update using (true);
create policy "d_dp" on dienstplan for delete using (true);
create policy "r_ze" on zeiteintraege for select using (true);
create policy "w_ze" on zeiteintraege for insert with check (true);
create policy "d_ze" on zeiteintraege for delete using (true);
create policy "u_ze" on zeiteintraege for update using (true);