On this page
9. Datenbank-Modell
PostgreSQL via Drizzle-ORM. Schema in packages/db/src/schema/index.ts.
9.1 Relationen (Foreign Keys)#
| Parent | → | Child | Cardinality | On Delete |
|---|---|---|---|---|
users | → | projects | 1 : N | set null (ownerId) |
projects | → | pages | 1 : N | cascade (projectId) |
pages | → | pageTranslations | 1 : N | cascade (pageId) |
projects | → | deployments | 1 : N | cascade (projectId) |
projects | → | mediaAssets | 1 : N | cascade (projectId) |
pages | → | pages | 1 : N (self) | set null (parentId) |
llmCache | — | standalone | — | keyed on mdHash |
9.2 Tabellen im Detail#
users — Accounts
id(uuid),email(unique),passwordHash,displayName,createdAt,updatedAt
projects — Sites/Projekte
id,ownerId→ usersname,slugdesignPack(string, defaultminimal)languages(csv string, z.B."de,en,fr")defaultLanguageprojectType(landing|product|conference|docs|wiki|portfolio|courses|blog|blank)docsConfig(jsonb — logo, topNavLinks, githubRepo)componentVariants(jsonb — Layout-Primitive-Defaults)- Cloudflare-Felder:
cfProjectName,customDomain,domainStatus,zoneTag,liveUrl,lastDeployedAt
pages — Markdown-Seiten
id,projectId→ projectstitle,slug(unique pro Projekt)sortOrder,isHomePage,parentId(self-ref für Hierarchie),showInNavmdContent(text)mdHash(sha256 für Cache-Invalidation)generatedJson(ComponentMapping)componentVariants(jsonb — Page-Level Content-Primitive-Overrides)
pageTranslations — Übersetzte Inhalte
id,pageId→ pages,languagemdContent,mdHash,generatedJsontranslatedAt,isManuallyEdited
llmCache — Mapping-Cache
mdHash(unique key)mappingJson- Wenn ein User ein bereits gemappte MD-Section nochmal generiert → Cache-Hit, kein LLM-Call
mediaAssets — Hochgeladene Files
id,projectId→ projectsfilename,storagePath,mimeType,sizeBytes,width,height,altstatus(pending|active) —pending= upload begonnen aber nicht bestätigt; cleanup nach 1h
deployments — Cloudflare-Deploy-Records
id,projectId→ projectscfDeploymentId— Cloudflare-Pages-IDstatus(queued|building|success|failure|canceled)url,completedAt,errorMessagecreatedByUserId,filesUploaded,filesCached