perf/ops: Auth-Latenz, Zähl-View, DB-Backup, Schreib-Limit, Asset-Cache
- auth: Supabase-JWT lokal verifizieren (hono/jwt, HS256) statt GoTrue- Roundtrip pro Request; JWT_SECRET in cms-env, Remote-Fallback wenn ungesetzt - dialog: comment_stats-View (group by thread) ersetzt Full-Table-Scan + JS-Aggregation bei jedem Forum-Aufruf - ops: scripts/backup-db.sh (pg_dump, rotiert) + täglicher Cron im Proxmox- Script — Dialog-Daten liegen nur in Postgres, nicht in Git - security: Rate-Limit auf Schreib-Endpunkte (/api non-GET, 60/min je Nutzer) - perf: Cache-Control (1 Woche) auf statische Assets, HTML bleibt frisch Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -52,6 +52,15 @@ create index if not exists comments_thread_idx on public.comments (thread, creat
|
||||
alter table public.comments enable row level security;
|
||||
grant all on public.comments to anon, authenticated, service_role;
|
||||
|
||||
-- Aggregat je Thread (Anzahl + letzte Aktivität). Spart der API den Full-Table-
|
||||
-- Scan + JS-Aggregation bei jedem Forum-Aufruf; Postgres zählt direkt.
|
||||
create or replace view public.comment_stats as
|
||||
select thread, count(*)::int as count, max(created_at) as last
|
||||
from public.comments
|
||||
where not deleted
|
||||
group by thread;
|
||||
grant select on public.comment_stats to service_role;
|
||||
|
||||
-- ── Foren / Subforen ────────────────────────────────────────────────────
|
||||
-- Kategorien, in denen Threads leben. Admin-verwaltet. `kind=library` ist die
|
||||
-- Sonder-Kategorie, in der die Library-Beiträge automatisch als Threads landen.
|
||||
|
||||
Reference in New Issue
Block a user