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:
2026-06-01 22:18:27 +02:00
parent 2650913050
commit d0b5c6f670
2 changed files with 123 additions and 0 deletions
+111
View File
@@ -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');