dialog: optionaler Forum-Demo-Seed (db/seed-demo.sql)
Beispiel-Threads + Wortmeldungen für die Forum-Kategorien, bewusst getrennt von der Migration (Produktion startet leer). Idempotent über feste UUIDs + ON CONFLICT DO NOTHING; manuell einspielbar, DELETE-Block zum Entfernen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -92,6 +92,18 @@ Dann: Admin `…:8080/admin/` · Live `…:8080/` · Preview `…:8080/_preview/
|
||||
`cd admin && npm install && npm run dev` (Vite-Devserver, proxyt `/api` +
|
||||
`/_preview` an den laufenden Container auf :8080).
|
||||
|
||||
### Demo-Inhalt fürs Forum (optional)
|
||||
|
||||
`db/seed-demo.sql` füllt die Forum-Kategorien mit ein paar Beispiel-Threads und
|
||||
-Wortmeldungen — bewusst **getrennt** von der Migration, damit die Produktion
|
||||
leer startet. Bei Bedarf manuell einspielen (idempotent, mehrfach lauffähig):
|
||||
|
||||
```bash
|
||||
docker compose exec -T db psql -U supabase_admin -d postgres < db/seed-demo.sql
|
||||
```
|
||||
|
||||
Wieder entfernen: DELETE-Block am Ende der Datei (auskommentiert).
|
||||
|
||||
## Sicherheit / Härtung
|
||||
|
||||
Eingebaute Schutzmaßnahmen (Stand: Härtungs-Pass):
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
-- OPENBUREAU — OPTIONALER Demo-Inhalt fürs Forum (Dialog).
|
||||
-- ─────────────────────────────────────────────────────────────────────────
|
||||
-- NICHT Teil der Migration: bewusst getrennt von schema.sql, damit die
|
||||
-- Produktion sauber bleibt. Nur bei Bedarf manuell einspielen, z.B.:
|
||||
--
|
||||
-- docker compose exec -T db \
|
||||
-- psql -U supabase_admin -d postgres < db/seed-demo.sql
|
||||
--
|
||||
-- Idempotent: feste UUIDs + ON CONFLICT DO NOTHING → mehrfaches Einspielen
|
||||
-- erzeugt keine Duplikate. Demo-Wortmeldungen haben user_id = NULL (keine
|
||||
-- echten Konten); author_name/author_role sind nur Anzeigetext.
|
||||
--
|
||||
-- Wieder entfernen: siehe DELETE-Block ganz unten (auskommentiert).
|
||||
-- ─────────────────────────────────────────────────────────────────────────
|
||||
|
||||
-- ── Threads ───────────────────────────────────────────────────────────────
|
||||
insert into public.threads (id, forum_id, key, title, url, kind, author_name, created_at) values
|
||||
('a1111111-1111-1111-1111-111111111101',
|
||||
(select id from public.forums where slug = 'allgemein'),
|
||||
't/a1111111-1111-1111-1111-111111111101',
|
||||
'Willkommen im OPENBUREAU-Dialog',
|
||||
'/dialog/?thread=t%2Fa1111111-1111-1111-1111-111111111101',
|
||||
'forum', 'Karim', now() - interval '9 days'),
|
||||
|
||||
('a2222222-2222-2222-2222-222222222202',
|
||||
(select id from public.forums where slug = 'projekte'),
|
||||
't/a2222222-2222-2222-2222-222222222202',
|
||||
'Altbausanierung Zürich — Materialwahl Innendämmung',
|
||||
'/dialog/?thread=t%2Fa2222222-2222-2222-2222-222222222202',
|
||||
'forum', 'Karim', now() - interval '6 days'),
|
||||
|
||||
('a3333333-3333-3333-3333-333333333303',
|
||||
(select id from public.forums where slug = 'technik'),
|
||||
't/a3333333-3333-3333-3333-333333333303',
|
||||
'Hugo-Build-Zeiten bei großen Bildmengen',
|
||||
'/dialog/?thread=t%2Fa3333333-3333-3333-3333-333333333303',
|
||||
'forum', 'Mara', now() - interval '3 days'),
|
||||
|
||||
('a4444444-4444-4444-4444-444444444404',
|
||||
(select id from public.forums where slug = 'off-topic'),
|
||||
't/a4444444-4444-4444-4444-444444444404',
|
||||
'Welches Architekturbuch hat euch geprägt?',
|
||||
'/dialog/?thread=t%2Fa4444444-4444-4444-4444-444444444404',
|
||||
'forum', 'Jonas', now() - interval '2 days')
|
||||
on conflict (key) do nothing;
|
||||
|
||||
-- ── Wortmeldungen ─────────────────────────────────────────────────────────
|
||||
-- parent_id verweist auf eine andere Wortmeldung (Antwort-Bezug).
|
||||
insert into public.comments (id, thread, parent_id, author_name, author_role, body, created_at) values
|
||||
-- Thread 1: Willkommen
|
||||
('c1111111-0000-0000-0000-000000000001',
|
||||
't/a1111111-1111-1111-1111-111111111101', null, 'Karim', 'Gründer',
|
||||
'Hallo zusammen — dieser Bereich ist für den offenen Austausch rund ums Büro: Projekte, Methoden, Werkzeuge. Lest euch ein, schreibt mit.',
|
||||
now() - interval '9 days'),
|
||||
('c1111111-0000-0000-0000-000000000002',
|
||||
't/a1111111-1111-1111-1111-111111111101',
|
||||
'c1111111-0000-0000-0000-000000000001', 'Mara', 'Projektarchitektin',
|
||||
'Schön, dass es losgeht. Gibt es eine Empfehlung, wie wir Projektdiskussionen von allgemeinem Plausch trennen?',
|
||||
now() - interval '8 days'),
|
||||
('c1111111-0000-0000-0000-000000000003',
|
||||
't/a1111111-1111-1111-1111-111111111101',
|
||||
'c1111111-0000-0000-0000-000000000002', 'Karim', 'Gründer',
|
||||
'Genau dafür gibt es die Kategorie „Projekte". „Off-Topic" ist für alles andere.',
|
||||
now() - interval '8 days'),
|
||||
|
||||
-- Thread 2: Innendämmung
|
||||
('c2222222-0000-0000-0000-000000000001',
|
||||
't/a2222222-2222-2222-2222-222222222202', null, 'Karim', 'Gründer',
|
||||
'Beim Altbau an der Seestrasse steht die Innendämmung an. Kalziumsilikat oder mineralischer Dämmputz? Erfahrungen mit Feuchteverhalten?',
|
||||
now() - interval '6 days'),
|
||||
('c2222222-0000-0000-0000-000000000002',
|
||||
't/a2222222-2222-2222-2222-222222222202',
|
||||
'c2222222-0000-0000-0000-000000000001', 'Mara', 'Projektarchitektin',
|
||||
'Kalziumsilikat ist diffusionsoffen und kapillaraktiv — bei den Bestandswänden dort würde ich das vorziehen. Wichtig ist die Detailausbildung an den Holzbalkenköpfen.',
|
||||
now() - interval '5 days'),
|
||||
('c2222222-0000-0000-0000-000000000003',
|
||||
't/a2222222-2222-2222-2222-222222222202',
|
||||
'c2222222-0000-0000-0000-000000000002', 'Jonas', 'Bauleiter',
|
||||
'Plus eins für Kalziumsilikat. Ich hänge nächste Woche die hygrothermische Simulation an, dann sehen wir die Tauwasserbilanz.',
|
||||
now() - interval '4 days'),
|
||||
|
||||
-- Thread 3: Hugo-Builds
|
||||
('c3333333-0000-0000-0000-000000000001',
|
||||
't/a3333333-3333-3333-3333-333333333303', null, 'Mara', 'Projektarchitektin',
|
||||
'Seit die Projektgalerien dazugekommen sind, dauert der Build spürbar länger. Hat jemand die Bildverarbeitung schon optimiert?',
|
||||
now() - interval '3 days'),
|
||||
('c3333333-0000-0000-0000-000000000002',
|
||||
't/a3333333-3333-3333-3333-333333333303',
|
||||
'c3333333-0000-0000-0000-000000000001', 'Karim', 'Gründer',
|
||||
'Hugo cached die Image-Resizes unter resources/. Solange der Ordner erhalten bleibt, werden nur neue Bilder neu gerechnet — das war bei uns der größte Hebel.',
|
||||
now() - interval '2 days'),
|
||||
|
||||
-- Thread 4: Architekturbuch
|
||||
('c4444444-0000-0000-0000-000000000001',
|
||||
't/a4444444-4444-4444-4444-444444444404', null, 'Jonas', 'Bauleiter',
|
||||
'Bei mir war es „Atmosphären" von Peter Zumthor — schmal, aber prägend. Was hat euch geformt?',
|
||||
now() - interval '2 days'),
|
||||
('c4444444-0000-0000-0000-000000000002',
|
||||
't/a4444444-4444-4444-4444-444444444404',
|
||||
'c4444444-0000-0000-0000-000000000001', 'Mara', 'Projektarchitektin',
|
||||
'„Complexity and Contradiction" von Venturi — hat mein Verständnis von Fassaden komplett verschoben.',
|
||||
now() - interval '1 day')
|
||||
on conflict (id) do nothing;
|
||||
|
||||
-- ── Demo-Inhalt wieder entfernen (bei Bedarf auskommentieren) ──────────────
|
||||
-- delete from public.comments where id::text like 'c_______-0000-0000-0000-%';
|
||||
-- delete from public.threads where key in (
|
||||
-- 't/a1111111-1111-1111-1111-111111111101',
|
||||
-- 't/a2222222-2222-2222-2222-222222222202',
|
||||
-- 't/a3333333-3333-3333-3333-333333333303',
|
||||
-- 't/a4444444-4444-4444-4444-444444444404');
|
||||
Reference in New Issue
Block a user