Changeset 834bcc3 in Klonkt for src/services/ensurePrimarySite.js
- Timestamp:
- 06/23/2026 06:14:27 PM (3 months ago)
- Branches:
- main
- Children:
- d774679
- Parents:
- bb42dfb
- File:
-
- 1 edited
-
src/services/ensurePrimarySite.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ensurePrimarySite.js
rbb42dfb r834bcc3 2 2 import db from '../config/database.js'; 3 3 4 // Een Klonkt-instance hoort ALTIJD een primaire site te hebben — die draagt de5 // identiteit (titel, thema, profiel) en is het ankerpunt in solo/hub/circle.6 // De register-flow maakt er al één aan, maar een via een script aangemaakte7 // beheerder (of een om wat voor reden dan ook lege sites-tabel) liet de8 // instance zonder site achter: geen instellingen, dashboard liep dood.4 // A Klonkt instance should ALWAYS have a primary site — it carries the identity 5 // (title, theme, profile) and is the anchor point in solo/hub/circle mode. 6 // The register flow already creates one, but an admin created via a script 7 // (or an empty sites table for any reason) left the instance without a site: 8 // no settings, dashboard would crash. 9 9 // 10 // Deze helper draait bij boot (en is idempotent): zodra er een beheerder is11 // maar nog geen enkele site, maakt 'ie een standaard-site aan, eigendom van de12 // eerste god/admin. Tenancy-onafhankelijk — geldt voor solo, hub éncircle.10 // This helper runs at boot (and is idempotent): as soon as there is an admin 11 // but no site yet, it creates a default site owned by the first god/admin. 12 // Tenancy-agnostic — applies to solo, hub, and circle. 13 13 14 14 function defaultTitle() { … … 20 20 if (label) return label.charAt(0).toUpperCase() + label.slice(1); 21 21 } 22 } catch { /* val terug op generiek*/ }22 } catch { /* fall back to generic */ } 23 23 return 'Mijn site'; 24 24 } … … 26 26 export function ensurePrimarySite() { 27 27 const count = db.prepare('SELECT COUNT(*) AS c FROM sites').get().c; 28 if (count > 0) return null; // er is al een site — niets te doen28 if (count > 0) return null; // a site already exists — nothing to do 29 29 30 30 const owner = db.prepare( 31 31 "SELECT id FROM users WHERE role IN ('god','admin') ORDER BY created_at LIMIT 1" 32 32 ).get(); 33 if (!owner) return null; // no g geen beheerder -> geen eigenaar, niets aanmaken33 if (!owner) return null; // no admin yet -> no owner, nothing to create 34 34 35 35 const siteId = uuid(); 36 const slug = 'main'; // n iet gereserveerd; in solo wordt de primaire site sowieso gepind36 const slug = 'main'; // not reserved; in solo mode the primary site is always pinned anyway 37 37 db.prepare(` 38 38 INSERT INTO sites (
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)