From 19fcb4d83792cbc742a2858ca3b2a6d34765166b Mon Sep 17 00:00:00 2001 From: Martin Porwoll Date: Sun, 7 Dec 2025 20:16:54 +0000 Subject: [PATCH] feat: implement multi-tenant email system with logging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Payload email adapter for system emails (auth, password reset) - Add EmailLogs collection for tracking all sent emails - Extend Tenants collection with SMTP configuration fields - Implement tenant-specific email service with transporter caching - Add /api/send-email endpoint with: - Authentication required - Tenant access control (users can only send for their tenants) - Rate limiting (10 emails/minute per user) - Add form submission notification hook with email logging - Add cache invalidation hook for tenant email config changes Security: - SMTP passwords are never returned in API responses - Passwords are preserved when field is left empty on update - Only super admins can delete email logs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- docs/IMPLEMENTIERUNGS-AUFTRAG.md | 627 + package.json | 2 + pnpm-lock.yaml | 1029 +- src/app/(frontend)/api/posts/route.ts | 9 +- src/app/(payload)/api/send-email/route.ts | 260 + src/collections/EmailLogs.ts | 131 + src/collections/Tenants.ts | 129 + src/hooks/invalidateCache.ts | 2 +- src/hooks/invalidateEmailCache.ts | 24 + src/hooks/sendFormNotification.ts | 131 + src/lib/email/payload-email-adapter.ts | 80 + src/lib/email/tenant-email-service.ts | 307 + src/lib/envValidation.ts | 23 + src/lib/redis.ts | 1 - src/lib/search.ts | 13 +- .../20251206_134750_tenant_email_config.json | 14282 +++++++++++++++ .../20251206_134750_tenant_email_config.ts | 27 + ...20251206_141403_email_logs_collection.json | 14486 ++++++++++++++++ .../20251206_141403_email_logs_collection.ts | 41 + src/migrations/index.ts | 14 +- src/payload-types.ts | 318 + src/payload.config.ts | 18 + tests/int/email.int.spec.ts | 139 + 23 files changed, 32073 insertions(+), 20 deletions(-) create mode 100644 docs/IMPLEMENTIERUNGS-AUFTRAG.md create mode 100644 src/app/(payload)/api/send-email/route.ts create mode 100644 src/collections/EmailLogs.ts create mode 100644 src/hooks/invalidateEmailCache.ts create mode 100644 src/hooks/sendFormNotification.ts create mode 100644 src/lib/email/payload-email-adapter.ts create mode 100644 src/lib/email/tenant-email-service.ts create mode 100644 src/migrations/20251206_134750_tenant_email_config.json create mode 100644 src/migrations/20251206_134750_tenant_email_config.ts create mode 100644 src/migrations/20251206_141403_email_logs_collection.json create mode 100644 src/migrations/20251206_141403_email_logs_collection.ts create mode 100644 tests/int/email.int.spec.ts diff --git a/docs/IMPLEMENTIERUNGS-AUFTRAG.md b/docs/IMPLEMENTIERUNGS-AUFTRAG.md new file mode 100644 index 0000000..7e7a660 --- /dev/null +++ b/docs/IMPLEMENTIERUNGS-AUFTRAG.md @@ -0,0 +1,627 @@ +# IMPLEMENTIERUNGS-AUFTRAG: Multi-Tenant E-Mail-System + +## Kontext + +Du arbeitest am Payload CMS 3.x Multi-Tenant-System auf pl.c2sgmbh.de. Das System verwaltet mehrere Websites (porwoll.de, complexcaresolutions.de, gunshin.de, caroline-porwoll.de, etc.) über eine zentrale Payload-Instanz. + +**Aktueller Status:** Kein E-Mail-Adapter konfiguriert. E-Mails werden nur in der Konsole ausgegeben. + +**Ziel:** Vollständiges Multi-Tenant E-Mail-System mit tenant-spezifischen SMTP-Servern und Absender-Adressen. + +--- + +## Anforderungen + +### Funktionale Anforderungen + +1. **Tenant-spezifische E-Mail-Konfiguration** + - Jeder Tenant kann eigene SMTP-Credentials haben + - Eigene Absender-Adresse und Absender-Name pro Tenant + - Eigene Reply-To-Adresse pro Tenant + - Fallback auf globale SMTP-Konfiguration wenn Tenant keine eigene hat + +2. **Sicherheit** + - SMTP-Passwörter dürfen NICHT in API-Responses zurückgegeben werden + - Passwörter bleiben erhalten wenn Feld bei Update leer gelassen wird + - Verschlüsselte Verbindungen (TLS/SSL) unterstützen + +3. **Performance** + - SMTP-Transporter cachen (nicht bei jeder E-Mail neu verbinden) + - Cache invalidieren wenn Tenant-E-Mail-Config geändert wird + +4. **Integration** + - Formular-Einsendungen lösen automatisch Benachrichtigungen aus + - REST-Endpoint für manuelles E-Mail-Senden + - Logging aller gesendeten E-Mails + +--- + +## Architektur + +``` +Request mit Tenant-Context + │ + ▼ +┌─────────────────┐ +│ TenantEmailService │◄─── Ermittelt Tenant aus Request/Context +└────────┬────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────┐ +│ Tenant E-Mail-Konfiguration? │ +│ │ +│ JA (eigener SMTP) NEIN (Fallback) │ +│ │ │ │ +│ ▼ ▼ │ +│ ┌─────────────────┐ ┌─────────────────┐ │ +│ │ Tenant SMTP │ │ Global SMTP │ │ +│ │ z.B. smtp.... │ │ aus .env │ │ +│ │ from: info@... │ │ from: noreply@ │ │ +│ └─────────────────┘ └─────────────────┘ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +--- + +## Implementierung + +### Schritt 1: Dependencies installieren + +```bash +pnpm add nodemailer +pnpm add -D @types/nodemailer +``` + +--- + +### Schritt 2: Tenants Collection erweitern + +**Datei:** `src/collections/Tenants/index.ts` + +Füge folgende Felder zur bestehenden Tenants Collection hinzu (als `group` Feld): + +```typescript +{ + name: 'email', + type: 'group', + label: 'E-Mail Konfiguration', + admin: { + description: 'SMTP-Einstellungen für diesen Tenant. Leer = globale Einstellungen.', + }, + fields: [ + { + type: 'row', + fields: [ + { + name: 'fromAddress', + type: 'email', + label: 'Absender E-Mail', + admin: { + placeholder: 'info@domain.de', + width: '50%', + }, + }, + { + name: 'fromName', + type: 'text', + label: 'Absender Name', + admin: { + placeholder: 'Firmenname', + width: '50%', + }, + }, + ], + }, + { + name: 'replyTo', + type: 'email', + label: 'Antwort-Adresse (Reply-To)', + admin: { + placeholder: 'kontakt@domain.de (optional)', + }, + }, + { + name: 'useCustomSmtp', + type: 'checkbox', + label: 'Eigenen SMTP-Server verwenden', + defaultValue: false, + }, + { + name: 'smtp', + type: 'group', + label: 'SMTP Einstellungen', + admin: { + condition: (data, siblingData) => siblingData?.useCustomSmtp, + }, + fields: [ + { + type: 'row', + fields: [ + { + name: 'host', + type: 'text', + label: 'SMTP Host', + admin: { + placeholder: 'smtp.example.com', + width: '50%', + }, + }, + { + name: 'port', + type: 'number', + label: 'Port', + defaultValue: 587, + admin: { + width: '25%', + }, + }, + { + name: 'secure', + type: 'checkbox', + label: 'SSL/TLS', + defaultValue: false, + admin: { + width: '25%', + }, + }, + ], + }, + { + type: 'row', + fields: [ + { + name: 'user', + type: 'text', + label: 'SMTP Benutzername', + admin: { + width: '50%', + }, + }, + { + name: 'pass', + type: 'text', + label: 'SMTP Passwort', + admin: { + width: '50%', + }, + access: { + read: () => false, // Passwort nie in API-Response + }, + hooks: { + beforeChange: [ + ({ value, originalDoc }) => { + // Behalte altes Passwort wenn Feld leer + if (!value && originalDoc?.email?.smtp?.pass) { + return originalDoc.email.smtp.pass + } + return value + }, + ], + }, + }, + ], + }, + ], + }, + ], +} +``` + +--- + +### Schritt 3: E-Mail Service erstellen + +**Datei:** `src/lib/email/tenant-email-service.ts` + +```typescript +import nodemailer from 'nodemailer' +import type { Payload } from 'payload' +import type { Tenant } from '@/payload-types' + +interface EmailOptions { + to: string | string[] + subject: string + html?: string + text?: string + replyTo?: string + attachments?: Array<{ + filename: string + content: Buffer | string + contentType?: string + }> +} + +// Cache für SMTP-Transporter +const transporterCache = new Map() + +// Globaler Fallback-Transporter +function getGlobalTransporter(): nodemailer.Transporter { + const cacheKey = 'global' + + if (!transporterCache.has(cacheKey)) { + const transporter = nodemailer.createTransport({ + host: process.env.SMTP_HOST, + port: parseInt(process.env.SMTP_PORT || '587'), + secure: process.env.SMTP_SECURE === 'true', + auth: { + user: process.env.SMTP_USER, + pass: process.env.SMTP_PASS, + }, + }) + transporterCache.set(cacheKey, transporter) + } + + return transporterCache.get(cacheKey)! +} + +// Tenant-spezifischer Transporter +function getTenantTransporter(tenant: Tenant): nodemailer.Transporter { + const smtp = tenant.email?.smtp + + if (!smtp?.host || !tenant.email?.useCustomSmtp) { + return getGlobalTransporter() + } + + const cacheKey = `tenant:${tenant.id}` + + if (!transporterCache.has(cacheKey)) { + const transporter = nodemailer.createTransport({ + host: smtp.host, + port: smtp.port || 587, + secure: smtp.secure || false, + auth: { + user: smtp.user, + pass: smtp.pass, + }, + }) + transporterCache.set(cacheKey, transporter) + } + + return transporterCache.get(cacheKey)! +} + +// Cache invalidieren +export function invalidateTenantEmailCache(tenantId: string): void { + transporterCache.delete(`tenant:${tenantId}`) +} + +// Haupt-Funktion: E-Mail für Tenant senden +export async function sendTenantEmail( + payload: Payload, + tenantId: string, + options: EmailOptions +): Promise<{ success: boolean; messageId?: string; error?: string }> { + try { + // Tenant laden mit Admin-Zugriff (für SMTP-Pass) + const tenant = await payload.findByID({ + collection: 'tenants', + id: tenantId, + depth: 0, + overrideAccess: true, + }) as Tenant + + if (!tenant) { + throw new Error(`Tenant ${tenantId} nicht gefunden`) + } + + // E-Mail-Konfiguration + const fromAddress = tenant.email?.fromAddress || process.env.SMTP_FROM_ADDRESS || 'noreply@c2sgmbh.de' + const fromName = tenant.email?.fromName || tenant.name || 'Payload CMS' + const replyTo = options.replyTo || tenant.email?.replyTo || fromAddress + + // Transporter wählen + const transporter = getTenantTransporter(tenant) + + // E-Mail senden + const result = await transporter.sendMail({ + from: `"${fromName}" <${fromAddress}>`, + to: Array.isArray(options.to) ? options.to.join(', ') : options.to, + replyTo, + subject: options.subject, + html: options.html, + text: options.text, + attachments: options.attachments, + }) + + console.log(`[Email] Sent to ${options.to} for tenant ${tenant.slug}: ${result.messageId}`) + + return { success: true, messageId: result.messageId } + } catch (error) { + console.error(`[Email] Error for tenant ${tenantId}:`, error) + return { + success: false, + error: error instanceof Error ? error.message : 'Unknown error', + } + } +} + +// Tenant aus Request ermitteln +export async function getTenantFromRequest( + payload: Payload, + req: Request +): Promise { + // Aus Header + const tenantSlug = req.headers.get('x-tenant-slug') + if (tenantSlug) { + const result = await payload.find({ + collection: 'tenants', + where: { slug: { equals: tenantSlug } }, + limit: 1, + }) + return result.docs[0] as Tenant || null + } + + // Aus Host-Header + const host = req.headers.get('host')?.replace(/:\d+$/, '') + if (host) { + const result = await payload.find({ + collection: 'tenants', + where: { 'domains.domain': { equals: host } }, + limit: 1, + }) + return result.docs[0] as Tenant || null + } + + return null +} +``` + +--- + +### Schritt 4: Cache-Invalidierung Hook + +**Datei:** `src/hooks/invalidateEmailCache.ts` + +```typescript +import type { CollectionAfterChangeHook } from 'payload' +import { invalidateTenantEmailCache } from '@/lib/email/tenant-email-service' + +export const invalidateEmailCacheHook: CollectionAfterChangeHook = async ({ + doc, + previousDoc, + operation, +}) => { + if (operation === 'update') { + const emailChanged = JSON.stringify(doc.email) !== JSON.stringify(previousDoc?.email) + if (emailChanged) { + invalidateTenantEmailCache(doc.id) + console.log(`[Email] Cache invalidated for tenant ${doc.slug}`) + } + } + + return doc +} +``` + +**Hook in Tenants Collection registrieren:** + +```typescript +// In src/collections/Tenants/index.ts +import { invalidateEmailCacheHook } from '@/hooks/invalidateEmailCache' + +export const Tenants: CollectionConfig = { + // ... + hooks: { + afterChange: [invalidateEmailCacheHook], + }, +} +``` + +--- + +### Schritt 5: Form-Submission Notification Hook + +**Datei:** `src/hooks/sendFormNotification.ts` + +```typescript +import type { CollectionAfterChangeHook } from 'payload' +import { sendTenantEmail } from '@/lib/email/tenant-email-service' + +export const sendFormNotification: CollectionAfterChangeHook = async ({ + doc, + req, + operation, +}) => { + if (operation !== 'create') return doc + + const { payload } = req + + // Form laden + const form = await payload.findByID({ + collection: 'forms', + id: doc.form, + depth: 1, + }) + + // Prüfen ob Benachrichtigung aktiviert + if (!form?.notifyOnSubmission || !form.notificationEmail) { + return doc + } + + // Tenant ermitteln + const tenantId = typeof form.tenant === 'string' ? form.tenant : form.tenant?.id + if (!tenantId) { + console.warn('[Forms] No tenant found for form submission') + return doc + } + + // Daten formatieren + const submissionData = doc.submissionData as Array<{ field: string; value: string }> + const dataHtml = submissionData + .map(item => `${item.field}${item.value}`) + .join('') + + // E-Mail senden + await sendTenantEmail(payload, tenantId, { + to: form.notificationEmail, + subject: `Neue Formular-Einsendung: ${form.title}`, + html: ` +

Neue Einsendung über ${form.title}

+ + ${dataHtml} +
+

Gesendet am ${new Date().toLocaleString('de-DE')}

+ `, + }) + + return doc +} +``` + +--- + +### Schritt 6: REST-Endpoint für manuelles Senden + +**Datei:** `src/app/(payload)/api/send-email/route.ts` + +```typescript +import { getPayload } from 'payload' +import config from '@payload-config' +import { sendTenantEmail } from '@/lib/email/tenant-email-service' +import { NextResponse } from 'next/server' + +export async function POST(req: Request) { + try { + const payload = await getPayload({ config }) + const body = await req.json() + + const { tenantId, to, subject, html, text } = body + + if (!tenantId || !to || !subject) { + return NextResponse.json( + { error: 'Missing required fields: tenantId, to, subject' }, + { status: 400 } + ) + } + + const result = await sendTenantEmail(payload, tenantId, { + to, + subject, + html, + text, + }) + + if (result.success) { + return NextResponse.json({ success: true, messageId: result.messageId }) + } else { + return NextResponse.json({ success: false, error: result.error }, { status: 500 }) + } + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : 'Unknown error' }, + { status: 500 } + ) + } +} +``` + +--- + +### Schritt 7: Environment Variables + +**Datei:** `.env` (ergänzen) + +```env +# Globale SMTP-Einstellungen (Fallback) +SMTP_HOST=smtp.c2sgmbh.de +SMTP_PORT=587 +SMTP_SECURE=false +SMTP_USER=noreply@c2sgmbh.de +SMTP_PASS=HIER_PASSWORT_EINTRAGEN +SMTP_FROM_ADDRESS=noreply@c2sgmbh.de +SMTP_FROM_NAME=C2S System +``` + +--- + +## Dateistruktur nach Implementierung + +``` +src/ +├── collections/ +│ └── Tenants/ +│ └── index.ts # + email group field +├── hooks/ +│ ├── invalidateEmailCache.ts # NEU +│ └── sendFormNotification.ts # NEU +├── lib/ +│ └── email/ +│ └── tenant-email-service.ts # NEU +└── app/ + └── (payload)/ + └── api/ + └── send-email/ + └── route.ts # NEU +``` + +--- + +## Testen + +### 1. Tenant E-Mail-Config im Admin UI + +1. Gehe zu Tenants → [beliebiger Tenant] +2. Scrolle zu "E-Mail Konfiguration" +3. Trage Absender-E-Mail und Name ein +4. Optional: Aktiviere "Eigenen SMTP-Server verwenden" und trage Credentials ein +5. Speichern + +### 2. Test-E-Mail via API + +```bash +curl -X POST https://pl.c2sgmbh.de/api/send-email \ + -H "Content-Type: application/json" \ + -d '{ + "tenantId": "TENANT_ID_HIER", + "to": "test@example.com", + "subject": "Test E-Mail", + "html": "

Hallo Welt

Dies ist ein Test.

" + }' +``` + +### 3. Formular-Test + +1. Erstelle ein Formular für einen Tenant +2. Aktiviere "Notify on Submission" und trage E-Mail ein +3. Sende eine Test-Einsendung über das Frontend +4. Prüfe ob E-Mail ankommt + +--- + +## Wichtige Hinweise + +1. **Types generieren** nach Änderung der Tenants Collection: + ```bash + pnpm generate:types + ``` + +2. **Build testen** vor Commit: + ```bash + pnpm build + ``` + +3. **SMTP-Credentials** sind sensibel - niemals in Git committen! + +4. **Logging** prüfen bei Problemen: + ```bash + pm2 logs payload + ``` + +--- + +## Erwartetes Ergebnis + +Nach erfolgreicher Implementierung: + +- ✅ Jeder Tenant hat im Admin UI eine "E-Mail Konfiguration" Sektion +- ✅ Tenants ohne eigene SMTP-Config nutzen automatisch globale Einstellungen +- ✅ E-Mails werden mit korrektem Absender pro Tenant gesendet +- ✅ Formular-Einsendungen lösen automatisch Benachrichtigungen aus +- ✅ SMTP-Passwörter sind geschützt und nicht via API abrufbar +- ✅ API-Endpoint `/api/send-email` ermöglicht manuelles Senden + +--- + +*Erstellt: 06. Dezember 2025* +*Projekt: Payload CMS Multi-Tenant* +*Server: pl.c2sgmbh.de (Development)* diff --git a/package.json b/package.json index ed109f3..a79937d 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "ioredis": "^5.8.2", "next": "15.4.7", "node-cron": "^4.2.1", + "nodemailer": "^7.0.11", "payload": "3.65.0", "react": "19.1.0", "react-dom": "19.1.0", @@ -45,6 +46,7 @@ "@testing-library/react": "16.3.0", "@types/node": "^22.5.4", "@types/node-cron": "^3.0.11", + "@types/nodemailer": "^7.0.4", "@types/react": "19.1.8", "@types/react-dom": "19.1.6", "@vitejs/plugin-react": "4.5.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88eb3fc..65e9727 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,6 +56,9 @@ importers: node-cron: specifier: ^4.2.1 version: 4.2.1 + nodemailer: + specifier: ^7.0.11 + version: 7.0.11 payload: specifier: 3.65.0 version: 3.65.0(graphql@16.12.0)(typescript@5.7.3) @@ -84,6 +87,9 @@ importers: '@types/node-cron': specifier: ^3.0.11 version: 3.0.11 + '@types/nodemailer': + specifier: ^7.0.4 + version: 7.0.4 '@types/react': specifier: 19.1.8 version: 19.1.8 @@ -130,6 +136,135 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-sesv2@3.946.0': + resolution: {integrity: sha512-JYj3BPqgyRXgBjZ3Xvo4Abd+vLxcsHe4gb0TvwiSM/k7e6MRgBZoYwDOnwbNDs/62X1sn7MPHqqB3miuO4nR5g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.946.0': + resolution: {integrity: sha512-kGAs5iIVyUz4p6TX3pzG5q3cNxXnVpC4pwRC6DCSaSv9ozyPjc2d74FsK4fZ+J+ejtvCdJk72uiuQtWJc86Wuw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.946.0': + resolution: {integrity: sha512-u2BkbLLVbMFrEiXrko2+S6ih5sUZPlbVyRPtXOqMHlCyzr70sE8kIiD6ba223rQeIFPcYfW/wHc6k4ihW2xxVg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.946.0': + resolution: {integrity: sha512-P4l+K6wX1tf8LmWUvZofdQ+BgCNyk6Tb9u1H10npvqpuCD+dCM4pXIBq3PQcv/juUBOvLGGREo+Govuh3lfD0Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.946.0': + resolution: {integrity: sha512-/zeOJ6E7dGZQ/l2k7KytEoPJX0APIhwt0A79hPf/bUpMF4dDs2P6JmchDrotk0a0Y/MIdNF8sBQ/MEOPnBiYoQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.946.0': + resolution: {integrity: sha512-Pdgcra3RivWj/TuZmfFaHbqsvvgnSKO0CxlRUMMr0PgBiCnUhyl+zBktdNOeGsOPH2fUzQpYhcUjYUgVSdcSDQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-login@3.946.0': + resolution: {integrity: sha512-5iqLNc15u2Zx+7jOdQkIbP62N7n2031tw5hkmIG0DLnozhnk64osOh2CliiOE9x3c4P9Pf4frAwgyy9GzNTk2g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.946.0': + resolution: {integrity: sha512-I7URUqnBPng1a5y81OImxrwERysZqMBREG6svhhGeZgxmqcpAZ8z5ywILeQXdEOCuuES8phUp/ojzxFjPXp/eA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.946.0': + resolution: {integrity: sha512-GtGHX7OGqIeVQ3DlVm5RRF43Qmf3S1+PLJv9svrdvAhAdy2bUb044FdXXqrtSsIfpzTKlHgQUiRo5MWLd35Ntw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.946.0': + resolution: {integrity: sha512-LeGSSt2V5iwYey1ENGY75RmoDP3bA2iE/py8QBKW8EDA8hn74XBLkprhrK5iccOvU3UGWY8WrEKFAFGNjJOL9g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.946.0': + resolution: {integrity: sha512-ocBCvjWfkbjxElBI1QUxOnHldsNhoU0uOICFvuRDAZAoxvypJHN3m5BJkqb7gqorBbcv3LRgmBdEnWXOAvq+7Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.936.0': + resolution: {integrity: sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.936.0': + resolution: {integrity: sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.936.0': + resolution: {integrity: sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.946.0': + resolution: {integrity: sha512-0UTFmFd8PX2k/jLu/DBmR+mmLQWAtUGHYps9Rjx3dcXNwaMLaa/39NoV3qn7Dwzfpqc6JZlZzBk+NDOCJIHW9g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.946.0': + resolution: {integrity: sha512-7QcljCraeaWQNuqmOoAyZs8KpZcuhPiqdeeKoRd397jVGNRehLFsZbIMOvwaluUDFY11oMyXOkQEERe1Zo2fCw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.946.0': + resolution: {integrity: sha512-rjAtEguukeW8mlyEQMQI56vxFoyWlaNwowmz1p1rav948SUjtrzjHAp4TOQWhibb7AR7BUTHBCgIcyCRjBEf4g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.936.0': + resolution: {integrity: sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.946.0': + resolution: {integrity: sha512-61FZ685lKiJuQ06g6U7K3PL9EwKCxNm51wNlxyKV57nnl1GrLD0NC8O3/hDNkCQLNBArT9y3IXl2H7TtIxP8Jg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.946.0': + resolution: {integrity: sha512-a5c+rM6CUPX2ExmUZ3DlbLlS5rQr4tbdoGcgBsjnAHiYx8MuMNAI+8M7wfjF13i2yvUQj5WEIddvLpayfEZj9g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.936.0': + resolution: {integrity: sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-arn-parser@3.893.0': + resolution: {integrity: sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.936.0': + resolution: {integrity: sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.893.0': + resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.936.0': + resolution: {integrity: sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==} + + '@aws-sdk/util-user-agent-node@3.946.0': + resolution: {integrity: sha512-a2UwwvzbK5AxHKUBupfg4s7VnkqRAHjYsuezHnKCniczmT4HZfP1NnfwwvLKEH8qaTrwenxjKSfq4UWmWkvG+Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.930.0': + resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.2.2': + resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==} + engines: {node: '>=18.0.0'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -1356,6 +1491,178 @@ packages: '@rushstack/eslint-patch@1.15.0': resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==} + '@smithy/abort-controller@4.2.5': + resolution: {integrity: sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.4.3': + resolution: {integrity: sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.18.7': + resolution: {integrity: sha512-axG9MvKhMWOhFbvf5y2DuyTxQueO0dkedY9QC3mAfndLosRI/9LJv8WaL0mw7ubNhsO4IuXX9/9dYGPFvHrqlw==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.2.5': + resolution: {integrity: sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.3.6': + resolution: {integrity: sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.2.5': + resolution: {integrity: sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.2.5': + resolution: {integrity: sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.2.0': + resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.2.5': + resolution: {integrity: sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.3.14': + resolution: {integrity: sha512-v0q4uTKgBM8dsqGjqsabZQyH85nFaTnFcgpWU1uydKFsdyyMzfvOkNum9G7VK+dOP01vUnoZxIeRiJ6uD0kjIg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.4.14': + resolution: {integrity: sha512-Z2DG8Ej7FyWG1UA+7HceINtSLzswUgs2np3sZX0YBBxCt+CXG4QUxv88ZDS3+2/1ldW7LqtSY1UO/6VQ1pND8Q==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.2.6': + resolution: {integrity: sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.2.5': + resolution: {integrity: sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.3.5': + resolution: {integrity: sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.4.5': + resolution: {integrity: sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.2.5': + resolution: {integrity: sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.3.5': + resolution: {integrity: sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.2.5': + resolution: {integrity: sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.2.5': + resolution: {integrity: sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.2.5': + resolution: {integrity: sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.4.0': + resolution: {integrity: sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.3.5': + resolution: {integrity: sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.9.10': + resolution: {integrity: sha512-Jaoz4Jw1QYHc1EFww/E6gVtNjhoDU+gwRKqXP6C3LKYqqH2UQhP8tMP3+t/ePrhaze7fhLE8vS2q6vVxBANFTQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.9.0': + resolution: {integrity: sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.2.5': + resolution: {integrity: sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.3.0': + resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.2.0': + resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.2.1': + resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.2.0': + resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.2.0': + resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.3.13': + resolution: {integrity: sha512-hlVLdAGrVfyNei+pKIgqDTxfu/ZI2NSyqj4IDxKd5bIsIqwR/dSlkxlPaYxFiIaDVrBy0he8orsFy+Cz119XvA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.2.16': + resolution: {integrity: sha512-F1t22IUiJLHrxW9W1CQ6B9PN+skZ9cqSuzB18Eh06HrJPbjsyZ7ZHecAKw80DQtyGTRcVfeukKaCRYebFwclbg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.2.5': + resolution: {integrity: sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.2.0': + resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.2.5': + resolution: {integrity: sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.2.5': + resolution: {integrity: sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.5.6': + resolution: {integrity: sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.2.0': + resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.2.0': + resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} + engines: {node: '>=18.0.0'} + + '@smithy/uuid@1.1.0': + resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + engines: {node: '>=18.0.0'} + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} @@ -1444,6 +1751,9 @@ packages: '@types/node@22.19.1': resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + '@types/nodemailer@7.0.4': + resolution: {integrity: sha512-ee8fxWqOchH+Hv6MDDNNy028kwvVnLplrStm4Zf/3uHWw5zzo8FoYYeffpJtGs2wWysEumMH0ZIdMGMY1eMAow==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1795,6 +2105,9 @@ packages: body-scroll-lock@4.0.0-beta.0: resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} + bowser@2.13.1: + resolution: {integrity: sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -2390,6 +2703,10 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -3065,6 +3382,10 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + nodemailer@7.0.11: + resolution: {integrity: sha512-gnXhNRE0FNhD7wPSCGhdNh46Hs6nm+uTyg+Kq0cZukNQiYdnCsoQjodNP9BQVG9XrcK/v6/MgpAPBUFyzh9pvw==} + engines: {node: '>=6.0.0'} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3672,6 +3993,9 @@ packages: strip-literal@3.1.0: resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + strtok3@8.1.0: resolution: {integrity: sha512-ExzDvHYPj6F6QkSNe/JxSlBxTh3OrI6wrAIz53ulxo1c4hBJ1bT9C/JrAthEKHWG9riVH3Xzg7B03Oxty6S2Lw==} engines: {node: '>=16'} @@ -4098,6 +4422,404 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-locate-window': 3.893.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.936.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-sesv2@3.946.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.946.0 + '@aws-sdk/credential-provider-node': 3.946.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.946.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/signature-v4-multi-region': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.946.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.7 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-retry': 4.4.14 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.13 + '@smithy/util-defaults-mode-node': 4.2.16 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.946.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.946.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.946.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.946.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.7 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-retry': 4.4.14 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.13 + '@smithy/util-defaults-mode-node': 4.2.16 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.946.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@aws-sdk/xml-builder': 3.930.0 + '@smithy/core': 3.18.7 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/credential-provider-env': 3.946.0 + '@aws-sdk/credential-provider-http': 3.946.0 + '@aws-sdk/credential-provider-login': 3.946.0 + '@aws-sdk/credential-provider-process': 3.946.0 + '@aws-sdk/credential-provider-sso': 3.946.0 + '@aws-sdk/credential-provider-web-identity': 3.946.0 + '@aws-sdk/nested-clients': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-login@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/nested-clients': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.946.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.946.0 + '@aws-sdk/credential-provider-http': 3.946.0 + '@aws-sdk/credential-provider-ini': 3.946.0 + '@aws-sdk/credential-provider-process': 3.946.0 + '@aws-sdk/credential-provider-sso': 3.946.0 + '@aws-sdk/credential-provider-web-identity': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.946.0': + dependencies: + '@aws-sdk/client-sso': 3.946.0 + '@aws-sdk/core': 3.946.0 + '@aws-sdk/token-providers': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/nested-clients': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/middleware-host-header@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@aws/lambda-invoke-store': 0.2.2 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-arn-parser': 3.893.0 + '@smithy/core': 3.18.7 + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@smithy/core': 3.18.7 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.946.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.946.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.946.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.946.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.7 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-retry': 4.4.14 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.13 + '@smithy/util-defaults-mode-node': 4.2.16 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.946.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.946.0': + dependencies: + '@aws-sdk/core': 3.946.0 + '@aws-sdk/nested-clients': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.936.0': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.893.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-endpoints': 3.2.5 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.893.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + bowser: 2.13.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.946.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.946.0 + '@aws-sdk/types': 3.936.0 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.930.0': + dependencies: + '@smithy/types': 4.9.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.2.2': {} + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -5337,6 +6059,280 @@ snapshots: '@rushstack/eslint-patch@1.15.0': {} + '@smithy/abort-controller@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/config-resolver@4.4.3': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + tslib: 2.8.1 + + '@smithy/core@3.18.7': + dependencies: + '@smithy/middleware-serde': 4.2.6 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.2.5': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.3.6': + dependencies: + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.2.5': + dependencies: + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.3.14': + dependencies: + '@smithy/core': 3.18.7 + '@smithy/middleware-serde': 4.2.6 + '@smithy/node-config-provider': 4.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-middleware': 4.2.5 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.4.14': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/service-error-classification': 4.2.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.2.6': + dependencies: + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.3.5': + dependencies: + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.4.5': + dependencies: + '@smithy/abort-controller': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/property-provider@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.3.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + '@smithy/util-uri-escape': 4.2.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + + '@smithy/shared-ini-file-loader@4.4.0': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.3.5': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.9.10': + dependencies: + '@smithy/core': 3.18.7 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-stack': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 + tslib: 2.8.1 + + '@smithy/types@4.9.0': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.2.5': + dependencies: + '@smithy/querystring-parser': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.3.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.2.1': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.2.0': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.3.13': + dependencies: + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.2.16': + dependencies: + '@smithy/config-resolver': 4.4.3 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.2.5': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.2.5': + dependencies: + '@smithy/service-error-classification': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.5.6': + dependencies: + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.2.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + tslib: 2.8.1 + + '@smithy/uuid@1.1.0': + dependencies: + tslib: 2.8.1 + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 @@ -5439,6 +6435,13 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/nodemailer@7.0.4': + dependencies: + '@aws-sdk/client-sesv2': 3.946.0 + '@types/node': 22.19.1 + transitivePeerDependencies: + - aws-crt + '@types/parse-json@4.0.2': {} '@types/pg@8.10.2': @@ -5819,6 +6822,8 @@ snapshots: body-scroll-lock@4.0.0-beta.0: {} + bowser@2.13.1: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -6285,8 +7290,8 @@ snapshots: '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.7.3) eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1))(eslint@9.39.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1) eslint-plugin-react: 7.37.5(eslint@9.39.1) eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1) @@ -6305,7 +7310,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -6316,22 +7321,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1))(eslint@9.39.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1))(eslint@9.39.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.7.3) eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1))(eslint@9.39.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -6342,7 +7347,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint@9.39.1))(eslint@9.39.1))(eslint@9.39.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -6504,6 +7509,10 @@ snapshots: fast-uri@3.1.0: {} + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.1.1 + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -7310,6 +8319,8 @@ snapshots: node-releases@2.0.27: {} + nodemailer@7.0.11: {} + normalize-path@3.0.0: {} nwsapi@2.2.22: {} @@ -8070,6 +9081,8 @@ snapshots: dependencies: js-tokens: 9.0.1 + strnum@2.1.1: {} + strtok3@8.1.0: dependencies: '@tokenizer/token': 0.3.0 diff --git a/src/app/(frontend)/api/posts/route.ts b/src/app/(frontend)/api/posts/route.ts index 401665e..42995fb 100644 --- a/src/app/(frontend)/api/posts/route.ts +++ b/src/app/(frontend)/api/posts/route.ts @@ -5,6 +5,7 @@ import { NextRequest, NextResponse } from 'next/server' import { getPayload } from 'payload' import config from '@payload-config' import { getPostsByCategory, checkRateLimit } from '@/lib/search' +import type { Category } from '@/payload-types' // Validation constants const MAX_LIMIT = 50 @@ -100,9 +101,11 @@ export async function GET(request: NextRequest) { height: post.featuredImage.height, } : null, - category: post.category && typeof post.category === 'object' - ? { name: post.category.name, slug: post.category.slug } - : null, + categories: Array.isArray(post.categories) + ? post.categories + .filter((cat): cat is Category => cat !== null && typeof cat === 'object' && 'name' in cat) + .map((cat) => ({ name: cat.name, slug: cat.slug })) + : [], })), pagination: { page: result.page, diff --git a/src/app/(payload)/api/send-email/route.ts b/src/app/(payload)/api/send-email/route.ts new file mode 100644 index 0000000..88ebc87 --- /dev/null +++ b/src/app/(payload)/api/send-email/route.ts @@ -0,0 +1,260 @@ +import { getPayload } from 'payload' +import config from '@payload-config' +import { sendTenantEmail, sendTestEmail } from '@/lib/email/tenant-email-service' +import { NextResponse } from 'next/server' + +// Rate Limiting: Max 10 E-Mails pro Minute pro User +const rateLimitMap = new Map() +const RATE_LIMIT_MAX = 10 +const RATE_LIMIT_WINDOW_MS = 60 * 1000 // 1 Minute + +function checkRateLimit(userId: string): { allowed: boolean; remaining: number; resetIn: number } { + const now = Date.now() + const userLimit = rateLimitMap.get(userId) + + if (!userLimit || now > userLimit.resetTime) { + rateLimitMap.set(userId, { count: 1, resetTime: now + RATE_LIMIT_WINDOW_MS }) + return { allowed: true, remaining: RATE_LIMIT_MAX - 1, resetIn: RATE_LIMIT_WINDOW_MS } + } + + if (userLimit.count >= RATE_LIMIT_MAX) { + return { + allowed: false, + remaining: 0, + resetIn: userLimit.resetTime - now, + } + } + + userLimit.count++ + return { + allowed: true, + remaining: RATE_LIMIT_MAX - userLimit.count, + resetIn: userLimit.resetTime - now, + } +} + +interface UserWithTenants { + id: number + isSuperAdmin?: boolean + tenants?: Array<{ + tenant: { id: number } | number + }> +} + +/** + * Prüft ob User Zugriff auf den angegebenen Tenant hat + */ +function userHasAccessToTenant(user: UserWithTenants, tenantId: number): boolean { + // Super Admins haben Zugriff auf alle Tenants + if (user.isSuperAdmin) { + return true + } + + // Prüfe ob User dem Tenant zugeordnet ist + if (!user.tenants || user.tenants.length === 0) { + return false + } + + return user.tenants.some((t) => { + const userTenantId = typeof t.tenant === 'object' ? t.tenant.id : t.tenant + return userTenantId === tenantId + }) +} + +/** + * POST /api/send-email + * + * Sendet eine E-Mail über den Tenant-spezifischen E-Mail-Service. + * Erfordert Authentifizierung und Zugriff auf den Tenant. + * + * Body: + * - tenantId: string | number (erforderlich) + * - to: string | string[] (erforderlich) + * - subject: string (erforderlich) + * - html?: string + * - text?: string + * - replyTo?: string + * - test?: boolean (sendet Test-E-Mail) + */ +export async function POST(req: Request) { + try { + const payload = await getPayload({ config }) + + // Authentifizierung prüfen (aus Cookie/Header) + const { user } = await payload.auth({ headers: req.headers }) + + if (!user) { + return NextResponse.json({ error: 'Unauthorized - Login required' }, { status: 401 }) + } + + const typedUser = user as UserWithTenants + + // Rate Limiting prüfen + const rateLimit = checkRateLimit(String(typedUser.id)) + if (!rateLimit.allowed) { + return NextResponse.json( + { + error: 'Rate limit exceeded', + message: `Maximum ${RATE_LIMIT_MAX} emails per minute. Try again in ${Math.ceil(rateLimit.resetIn / 1000)} seconds.`, + }, + { + status: 429, + headers: { + 'X-RateLimit-Limit': String(RATE_LIMIT_MAX), + 'X-RateLimit-Remaining': '0', + 'X-RateLimit-Reset': String(Math.ceil(rateLimit.resetIn / 1000)), + }, + }, + ) + } + + const body = await req.json() + const { tenantId, to, subject, html, text, replyTo, test } = body + + // Validierung + if (!tenantId) { + return NextResponse.json({ error: 'Missing required field: tenantId' }, { status: 400 }) + } + + const numericTenantId = Number(tenantId) + if (isNaN(numericTenantId)) { + return NextResponse.json({ error: 'Invalid tenantId: must be a number' }, { status: 400 }) + } + + // Zugriffskontrolle: User muss Zugriff auf den Tenant haben + if (!userHasAccessToTenant(typedUser, numericTenantId)) { + return NextResponse.json( + { error: 'Forbidden - You do not have access to this tenant' }, + { status: 403 }, + ) + } + + // Rate Limit Headers hinzufügen + const rateLimitHeaders = { + 'X-RateLimit-Limit': String(RATE_LIMIT_MAX), + 'X-RateLimit-Remaining': String(rateLimit.remaining), + 'X-RateLimit-Reset': String(Math.ceil(rateLimit.resetIn / 1000)), + } + + // Test-E-Mail senden + if (test) { + if (!to) { + return NextResponse.json( + { error: 'Missing required field: to (for test email)' }, + { status: 400 }, + ) + } + + const result = await sendTestEmail(payload, numericTenantId, to) + + if (result.success) { + return NextResponse.json( + { + success: true, + message: 'Test email sent successfully', + messageId: result.messageId, + logId: result.logId, + }, + { headers: rateLimitHeaders }, + ) + } else { + return NextResponse.json( + { success: false, error: result.error, logId: result.logId }, + { status: 500, headers: rateLimitHeaders }, + ) + } + } + + // Normale E-Mail senden + if (!to || !subject) { + return NextResponse.json( + { error: 'Missing required fields: to, subject' }, + { status: 400 }, + ) + } + + if (!html && !text) { + return NextResponse.json( + { error: 'At least one of html or text is required' }, + { status: 400 }, + ) + } + + const result = await sendTenantEmail(payload, numericTenantId, { + to, + subject, + html, + text, + replyTo, + source: 'manual', + metadata: { sentBy: typedUser.id }, + }) + + if (result.success) { + return NextResponse.json( + { + success: true, + message: 'Email sent successfully', + messageId: result.messageId, + logId: result.logId, + }, + { headers: rateLimitHeaders }, + ) + } else { + return NextResponse.json( + { success: false, error: result.error, logId: result.logId }, + { status: 500, headers: rateLimitHeaders }, + ) + } + } catch (error) { + console.error('[API] send-email error:', error) + return NextResponse.json( + { error: error instanceof Error ? error.message : 'Unknown error' }, + { status: 500 }, + ) + } +} + +/** + * GET /api/send-email + * + * Gibt API-Dokumentation zurück. + */ +export async function GET() { + return NextResponse.json({ + endpoint: '/api/send-email', + method: 'POST', + description: 'Send emails using the tenant-specific email service', + authentication: 'Required (Cookie or Authorization header)', + authorization: 'User must have access to the specified tenant', + rateLimit: `${RATE_LIMIT_MAX} requests per minute per user`, + body: { + tenantId: 'number (required) - ID of the tenant', + to: 'string | string[] (required) - Recipient email(s)', + subject: 'string (required) - Email subject', + html: 'string (optional) - HTML content', + text: 'string (optional) - Plain text content', + replyTo: 'string (optional) - Reply-to address', + test: 'boolean (optional) - Send test email', + }, + response: { + success: 'boolean', + messageId: 'string (on success)', + logId: 'number (email log ID)', + error: 'string (on failure)', + }, + examples: { + sendEmail: { + tenantId: 1, + to: 'recipient@example.com', + subject: 'Hello World', + html: '

Hello!

This is a test email.

', + }, + sendTestEmail: { + tenantId: 1, + to: 'test@example.com', + test: true, + }, + }, + }) +} diff --git a/src/collections/EmailLogs.ts b/src/collections/EmailLogs.ts new file mode 100644 index 0000000..a265bb7 --- /dev/null +++ b/src/collections/EmailLogs.ts @@ -0,0 +1,131 @@ +import type { CollectionConfig } from 'payload' + +export const EmailLogs: CollectionConfig = { + slug: 'email-logs', + admin: { + useAsTitle: 'subject', + group: 'System', + description: 'Protokoll aller gesendeten E-Mails', + defaultColumns: ['to', 'subject', 'status', 'tenant', 'createdAt'], + }, + access: { + // Nur Admins können Logs lesen + read: ({ req }) => { + if (!req.user) return false + // Super Admins sehen alle + if ((req.user as { isSuperAdmin?: boolean }).isSuperAdmin) return true + // Normale User sehen nur Logs ihrer Tenants + return { + tenant: { + in: (req.user.tenants || []).map( + (t: { tenant: { id: number } | number }) => + typeof t.tenant === 'object' ? t.tenant.id : t.tenant, + ), + }, + } + }, + // Niemand kann manuell Logs erstellen/bearbeiten + create: () => false, + update: () => false, + delete: ({ req }) => { + // Nur Super Admins können Logs löschen + return Boolean((req.user as { isSuperAdmin?: boolean })?.isSuperAdmin) + }, + }, + fields: [ + { + name: 'tenant', + type: 'relationship', + relationTo: 'tenants', + required: true, + label: 'Tenant', + admin: { + readOnly: true, + }, + }, + { + name: 'to', + type: 'text', + required: true, + label: 'Empfänger', + admin: { + readOnly: true, + }, + }, + { + name: 'from', + type: 'text', + required: true, + label: 'Absender', + admin: { + readOnly: true, + }, + }, + { + name: 'subject', + type: 'text', + required: true, + label: 'Betreff', + admin: { + readOnly: true, + }, + }, + { + name: 'status', + type: 'select', + required: true, + defaultValue: 'pending', + options: [ + { label: 'Ausstehend', value: 'pending' }, + { label: 'Gesendet', value: 'sent' }, + { label: 'Fehlgeschlagen', value: 'failed' }, + ], + admin: { + readOnly: true, + }, + }, + { + name: 'messageId', + type: 'text', + label: 'Message-ID', + admin: { + readOnly: true, + description: 'SMTP Message-ID bei erfolgreichem Versand', + }, + }, + { + name: 'error', + type: 'textarea', + label: 'Fehlermeldung', + admin: { + readOnly: true, + condition: (data) => data?.status === 'failed', + }, + }, + { + name: 'source', + type: 'select', + required: true, + defaultValue: 'manual', + options: [ + { label: 'Manuell (API)', value: 'manual' }, + { label: 'Formular-Einsendung', value: 'form' }, + { label: 'System (Auth)', value: 'system' }, + { label: 'Newsletter', value: 'newsletter' }, + ], + label: 'Quelle', + admin: { + readOnly: true, + }, + }, + { + name: 'metadata', + type: 'json', + label: 'Zusätzliche Daten', + admin: { + readOnly: true, + description: 'Zusätzliche Kontextinformationen (z.B. Form-ID)', + }, + }, + ], +} diff --git a/src/collections/Tenants.ts b/src/collections/Tenants.ts index a203b26..3369290 100644 --- a/src/collections/Tenants.ts +++ b/src/collections/Tenants.ts @@ -1,10 +1,14 @@ import type { CollectionConfig } from 'payload' +import { invalidateEmailCacheHook } from '../hooks/invalidateEmailCache' export const Tenants: CollectionConfig = { slug: 'tenants', admin: { useAsTitle: 'name', }, + hooks: { + afterChange: [invalidateEmailCacheHook], + }, fields: [ { name: 'name', @@ -28,5 +32,130 @@ export const Tenants: CollectionConfig = { }, ], }, + // E-Mail Konfiguration + { + name: 'email', + type: 'group', + label: 'E-Mail Konfiguration', + admin: { + description: 'SMTP-Einstellungen für diesen Tenant. Leer = globale Einstellungen.', + }, + fields: [ + { + type: 'row', + fields: [ + { + name: 'fromAddress', + type: 'email', + label: 'Absender E-Mail', + admin: { + placeholder: 'info@domain.de', + width: '50%', + }, + }, + { + name: 'fromName', + type: 'text', + label: 'Absender Name', + admin: { + placeholder: 'Firmenname', + width: '50%', + }, + }, + ], + }, + { + name: 'replyTo', + type: 'email', + label: 'Antwort-Adresse (Reply-To)', + admin: { + placeholder: 'kontakt@domain.de (optional)', + }, + }, + { + name: 'useCustomSmtp', + type: 'checkbox', + label: 'Eigenen SMTP-Server verwenden', + defaultValue: false, + }, + { + name: 'smtp', + type: 'group', + label: 'SMTP Einstellungen', + admin: { + condition: (_, siblingData) => siblingData?.useCustomSmtp, + }, + fields: [ + { + type: 'row', + fields: [ + { + name: 'host', + type: 'text', + label: 'SMTP Host', + admin: { + placeholder: 'smtp.example.com', + width: '50%', + }, + }, + { + name: 'port', + type: 'number', + label: 'Port', + defaultValue: 587, + admin: { + width: '25%', + }, + }, + { + name: 'secure', + type: 'checkbox', + label: 'SSL/TLS', + defaultValue: false, + admin: { + width: '25%', + }, + }, + ], + }, + { + type: 'row', + fields: [ + { + name: 'user', + type: 'text', + label: 'SMTP Benutzername', + admin: { + width: '50%', + }, + }, + { + name: 'pass', + type: 'text', + label: 'SMTP Passwort', + admin: { + width: '50%', + }, + access: { + read: () => false, // Passwort nie in API-Response + }, + hooks: { + beforeChange: [ + ({ value, originalDoc }) => { + // Behalte altes Passwort wenn Feld leer + if (!value && originalDoc?.email?.smtp?.pass) { + return originalDoc.email.smtp.pass + } + return value + }, + ], + }, + }, + ], + }, + ], + }, + ], + }, ], } diff --git a/src/hooks/invalidateCache.ts b/src/hooks/invalidateCache.ts index dbe5c16..e6ada7d 100644 --- a/src/hooks/invalidateCache.ts +++ b/src/hooks/invalidateCache.ts @@ -21,7 +21,7 @@ export const invalidateCacheOnChange: CollectionAfterChangeHook = async ({ await cache.delPattern('post:*') await cache.delPattern('posts:*') break - case 'navigation': + case 'social-links': await cache.delPattern('nav:*') break case 'categories': diff --git a/src/hooks/invalidateEmailCache.ts b/src/hooks/invalidateEmailCache.ts new file mode 100644 index 0000000..63937c8 --- /dev/null +++ b/src/hooks/invalidateEmailCache.ts @@ -0,0 +1,24 @@ +import type { CollectionAfterChangeHook } from 'payload' +import { invalidateTenantEmailCache } from '../lib/email/tenant-email-service' + +/** + * Hook: Invalidiert den E-Mail-Transporter-Cache wenn sich die + * E-Mail-Konfiguration eines Tenants ändert. + */ +export const invalidateEmailCacheHook: CollectionAfterChangeHook = async ({ + doc, + previousDoc, + operation, +}) => { + if (operation === 'update') { + // Prüfen ob sich die E-Mail-Konfiguration geändert hat + const emailChanged = JSON.stringify(doc.email) !== JSON.stringify(previousDoc?.email) + + if (emailChanged) { + invalidateTenantEmailCache(doc.id) + console.log(`[Email] Cache invalidated for tenant ${doc.slug}`) + } + } + + return doc +} diff --git a/src/hooks/sendFormNotification.ts b/src/hooks/sendFormNotification.ts new file mode 100644 index 0000000..6589313 --- /dev/null +++ b/src/hooks/sendFormNotification.ts @@ -0,0 +1,131 @@ +import type { CollectionAfterChangeHook } from 'payload' +import { sendTenantEmail } from '../lib/email/tenant-email-service' + +interface SubmissionData { + field: string + value: string +} + +interface FormEmail { + emailTo?: string | null + cc?: string | null + bcc?: string | null + replyTo?: string | null + emailFrom?: string | null + subject?: string | null + message?: string | null +} + +interface FormDocument { + id: number | string + title: string + emails?: FormEmail[] + tenant?: { id: number | string } | number | string +} + +/** + * Hook: Sendet E-Mail-Benachrichtigungen bei neuen Formular-Einsendungen. + * Verwendet den Tenant-spezifischen E-Mail-Service. + */ +export const sendFormNotification: CollectionAfterChangeHook = async ({ + doc, + req, + operation, +}) => { + // Nur bei neuen Einsendungen + if (operation !== 'create') return doc + + const { payload } = req + + try { + // Form laden mit Details + const form = (await payload.findByID({ + collection: 'forms', + id: doc.form, + depth: 1, + })) as FormDocument | null + + if (!form) { + console.warn('[Forms] Form not found for submission:', doc.form) + return doc + } + + // Prüfen ob E-Mail-Benachrichtigungen konfiguriert sind + if (!form.emails || form.emails.length === 0) { + return doc + } + + // Tenant ermitteln + const tenantId = typeof form.tenant === 'object' ? form.tenant?.id : form.tenant + + if (!tenantId) { + console.warn('[Forms] No tenant found for form submission, skipping email') + return doc + } + + // Daten formatieren + const submissionData = doc.submissionData as SubmissionData[] | undefined + const dataHtml = submissionData + ? submissionData + .map( + (item) => + `${item.field}${item.value || '-'}`, + ) + .join('') + : 'Keine Daten' + + const dataText = submissionData + ? submissionData.map((item) => `${item.field}: ${item.value || '-'}`).join('\n') + : 'Keine Daten' + + // E-Mails senden für jede konfigurierte E-Mail-Adresse + for (const emailConfig of form.emails) { + if (!emailConfig.emailTo) continue + + const subject = emailConfig.subject || `Neue Formular-Einsendung: ${form.title}` + + await sendTenantEmail(payload, tenantId, { + to: emailConfig.emailTo, + subject, + replyTo: emailConfig.replyTo || undefined, + source: 'form', + metadata: { + formId: form.id, + formTitle: form.title, + submissionId: doc.id, + }, + html: ` +
+

Neue Einsendung über "${form.title}"

+ + ${emailConfig.message ? `

${emailConfig.message}

` : ''} + + + + + + + + + + ${dataHtml} + +
FeldWert
+ +

+ Gesendet am ${new Date().toLocaleString('de-DE')} +

+
+ `, + text: `Neue Einsendung über "${form.title}"\n\n${emailConfig.message || ''}\n\n${dataText}\n\nGesendet am ${new Date().toLocaleString('de-DE')}`, + }) + + console.log(`[Forms] Notification sent to ${emailConfig.emailTo} for form ${form.title}`) + } + } catch (error) { + console.error('[Forms] Error sending notification:', error) + // Fehler nicht weiterwerfen, damit die Einsendung trotzdem gespeichert wird + } + + return doc +} diff --git a/src/lib/email/payload-email-adapter.ts b/src/lib/email/payload-email-adapter.ts new file mode 100644 index 0000000..97de7a5 --- /dev/null +++ b/src/lib/email/payload-email-adapter.ts @@ -0,0 +1,80 @@ +/** + * Payload Email Adapter + * + * Integriert den Multi-Tenant E-Mail-Service in Payloads Built-in Email-System. + * Damit nutzen alle CMS-eigenen Mails (Auth, Passwort-Reset, etc.) automatisch + * den Tenant-spezifischen SMTP. + */ + +import type { EmailAdapter, SendEmailOptions as PayloadSendEmailOptions } from 'payload' +import nodemailer from 'nodemailer' +import type { Transporter } from 'nodemailer' + +// Cache für den globalen Transporter +let globalTransporter: Transporter | null = null + +/** + * Erstellt den globalen SMTP-Transporter + */ +function getGlobalTransporter(): Transporter { + if (!globalTransporter) { + globalTransporter = nodemailer.createTransport({ + host: process.env.SMTP_HOST || 'localhost', + port: parseInt(process.env.SMTP_PORT || '587'), + secure: process.env.SMTP_SECURE === 'true', + auth: + process.env.SMTP_USER && process.env.SMTP_PASS + ? { + user: process.env.SMTP_USER, + pass: process.env.SMTP_PASS, + } + : undefined, + }) + } + return globalTransporter +} + +/** + * Multi-Tenant Email Adapter für Payload CMS + * + * Dieser Adapter wird für System-E-Mails (Auth, Passwort-Reset) verwendet. + * Er nutzt die globale SMTP-Konfiguration als Fallback. + * + * Für Tenant-spezifische E-Mails sollte weiterhin sendTenantEmail() verwendet werden. + */ +export const multiTenantEmailAdapter: EmailAdapter = () => { + const fromAddress = process.env.SMTP_FROM_ADDRESS || 'noreply@c2sgmbh.de' + const fromName = process.env.SMTP_FROM_NAME || 'Payload CMS' + + return { + name: 'multi-tenant-nodemailer', + defaultFromAddress: fromAddress, + defaultFromName: fromName, + + sendEmail: async (args: PayloadSendEmailOptions): Promise => { + const transporter = getGlobalTransporter() + + try { + const result = await transporter.sendMail({ + from: args.from || `"${fromName}" <${fromAddress}>`, + to: args.to, + subject: args.subject, + html: args.html, + text: args.text, + }) + + console.log(`[Email:Payload] Sent to ${args.to}: ${result.messageId}`) + } catch (error) { + console.error('[Email:Payload] Error sending email:', error) + throw error + } + }, + } +} + +/** + * Prüft ob SMTP konfiguriert ist + */ +export function isSmtpConfigured(): boolean { + return Boolean(process.env.SMTP_HOST && process.env.SMTP_USER && process.env.SMTP_PASS) +} diff --git a/src/lib/email/tenant-email-service.ts b/src/lib/email/tenant-email-service.ts new file mode 100644 index 0000000..e9dee20 --- /dev/null +++ b/src/lib/email/tenant-email-service.ts @@ -0,0 +1,307 @@ +import nodemailer from 'nodemailer' +import type { Transporter } from 'nodemailer' +import type { Payload } from 'payload' +import type { Tenant } from '../../payload-types' + +export interface EmailOptions { + to: string | string[] + subject: string + html?: string + text?: string + replyTo?: string + attachments?: Array<{ + filename: string + content: Buffer | string + contentType?: string + }> +} + +export interface SendEmailResult { + success: boolean + messageId?: string + error?: string + logId?: number +} + +export type EmailSource = 'manual' | 'form' | 'system' | 'newsletter' + +interface SendEmailOptions extends EmailOptions { + source?: EmailSource + metadata?: Record +} + +// Cache für SMTP-Transporter +const transporterCache = new Map() + +/** + * Globaler Fallback-Transporter aus .env Variablen + */ +function getGlobalTransporter(): Transporter { + const cacheKey = 'global' + + if (!transporterCache.has(cacheKey)) { + const transporter = nodemailer.createTransport({ + host: process.env.SMTP_HOST, + port: parseInt(process.env.SMTP_PORT || '587'), + secure: process.env.SMTP_SECURE === 'true', + auth: { + user: process.env.SMTP_USER, + pass: process.env.SMTP_PASS, + }, + }) + transporterCache.set(cacheKey, transporter) + } + + return transporterCache.get(cacheKey)! +} + +/** + * Tenant-spezifischer Transporter (falls eigener SMTP konfiguriert) + */ +function getTenantTransporter(tenant: Tenant): Transporter { + const smtp = tenant.email?.smtp + + if (!smtp?.host || !tenant.email?.useCustomSmtp) { + return getGlobalTransporter() + } + + const cacheKey = `tenant:${tenant.id}` + + if (!transporterCache.has(cacheKey)) { + const transporter = nodemailer.createTransport({ + host: smtp.host, + port: smtp.port || 587, + secure: smtp.secure || false, + auth: { + user: smtp.user || '', + pass: smtp.pass || '', + }, + }) + transporterCache.set(cacheKey, transporter) + } + + return transporterCache.get(cacheKey)! +} + +/** + * Cache invalidieren wenn Tenant-E-Mail-Config geändert wird + */ +export function invalidateTenantEmailCache(tenantId: string | number): void { + transporterCache.delete(`tenant:${tenantId}`) +} + +/** + * Globalen Cache invalidieren + */ +export function invalidateGlobalEmailCache(): void { + transporterCache.delete('global') +} + +/** + * E-Mail-Log erstellen + */ +async function createEmailLog( + payload: Payload, + tenantId: string | number, + data: { + to: string + from: string + subject: string + status: 'pending' | 'sent' | 'failed' + messageId?: string + error?: string + source: EmailSource + metadata?: Record + }, +): Promise { + try { + const log = await payload.create({ + collection: 'email-logs', + data: { + tenant: Number(tenantId), + to: data.to, + from: data.from, + subject: data.subject, + status: data.status, + messageId: data.messageId, + error: data.error, + source: data.source, + metadata: data.metadata, + }, + overrideAccess: true, + }) + return log.id + } catch (error) { + console.error('[EmailLog] Failed to create log:', error) + return null + } +} + +/** + * E-Mail-Log aktualisieren + */ +async function updateEmailLog( + payload: Payload, + logId: number, + data: { + status: 'sent' | 'failed' + messageId?: string + error?: string + }, +): Promise { + try { + await payload.update({ + collection: 'email-logs', + id: logId, + data, + overrideAccess: true, + }) + } catch (error) { + console.error('[EmailLog] Failed to update log:', error) + } +} + +/** + * Haupt-Funktion: E-Mail für einen Tenant senden mit Logging + * + * @param payload - Payload Instanz + * @param tenantId - ID des Tenants + * @param options - E-Mail-Optionen (to, subject, html/text, etc.) + */ +export async function sendTenantEmail( + payload: Payload, + tenantId: string | number, + options: SendEmailOptions, +): Promise { + const source = options.source || 'manual' + let logId: number | null = null + + try { + // Tenant laden mit Admin-Zugriff (für SMTP-Pass) + const tenant = (await payload.findByID({ + collection: 'tenants', + id: tenantId, + depth: 0, + overrideAccess: true, + })) as Tenant + + if (!tenant) { + throw new Error(`Tenant ${tenantId} nicht gefunden`) + } + + // E-Mail-Konfiguration mit Fallbacks + const fromAddress = + tenant.email?.fromAddress || process.env.SMTP_FROM_ADDRESS || 'noreply@c2sgmbh.de' + const fromName = tenant.email?.fromName || tenant.name || 'Payload CMS' + const from = `"${fromName}" <${fromAddress}>` + const replyTo = options.replyTo || tenant.email?.replyTo || fromAddress + const toAddress = Array.isArray(options.to) ? options.to.join(', ') : options.to + + // Log erstellen (status: pending) + logId = await createEmailLog(payload, tenantId, { + to: toAddress, + from, + subject: options.subject, + status: 'pending', + source, + metadata: options.metadata, + }) + + // Transporter wählen (Tenant-spezifisch oder global) + const transporter = getTenantTransporter(tenant) + + // E-Mail senden + const result = await transporter.sendMail({ + from, + to: toAddress, + replyTo, + subject: options.subject, + html: options.html, + text: options.text, + attachments: options.attachments, + }) + + // Log aktualisieren (status: sent) + if (logId) { + await updateEmailLog(payload, logId, { + status: 'sent', + messageId: result.messageId, + }) + } + + console.log(`[Email] Sent to ${options.to} for tenant ${tenant.slug}: ${result.messageId}`) + + return { success: true, messageId: result.messageId, logId: logId || undefined } + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error' + + // Log aktualisieren (status: failed) + if (logId) { + await updateEmailLog(payload, logId, { + status: 'failed', + error: errorMessage, + }) + } + + console.error(`[Email] Error for tenant ${tenantId}:`, error) + return { + success: false, + error: errorMessage, + logId: logId || undefined, + } + } +} + +/** + * Tenant aus Request ermitteln (via Header oder Host) + */ +export async function getTenantFromRequest( + payload: Payload, + req: Request, +): Promise { + // Aus X-Tenant-Slug Header + const tenantSlug = req.headers.get('x-tenant-slug') + if (tenantSlug) { + const result = await payload.find({ + collection: 'tenants', + where: { slug: { equals: tenantSlug } }, + limit: 1, + }) + return (result.docs[0] as Tenant) || null + } + + // Aus Host-Header (Domain) + const host = req.headers.get('host')?.replace(/:\d+$/, '') + if (host) { + const result = await payload.find({ + collection: 'tenants', + where: { 'domains.domain': { equals: host } }, + limit: 1, + }) + return (result.docs[0] as Tenant) || null + } + + return null +} + +/** + * Test-E-Mail senden um SMTP-Konfiguration zu verifizieren + */ +export async function sendTestEmail( + payload: Payload, + tenantId: string | number, + recipientEmail: string, +): Promise { + return sendTenantEmail(payload, tenantId, { + to: recipientEmail, + subject: 'Test E-Mail - SMTP Konfiguration', + html: ` +

SMTP-Konfiguration erfolgreich!

+

Diese Test-E-Mail bestätigt, dass die E-Mail-Konfiguration für diesen Tenant funktioniert.

+

Gesendet am ${new Date().toLocaleString('de-DE')}

+ `, + text: `SMTP-Konfiguration erfolgreich!\n\nDiese Test-E-Mail bestätigt, dass die E-Mail-Konfiguration für diesen Tenant funktioniert.\n\nGesendet am ${new Date().toLocaleString('de-DE')}`, + source: 'manual', + metadata: { type: 'test' }, + }) +} diff --git a/src/lib/envValidation.ts b/src/lib/envValidation.ts index 70470b3..669ed65 100644 --- a/src/lib/envValidation.ts +++ b/src/lib/envValidation.ts @@ -12,6 +12,29 @@ interface RequiredEnvVars { IP_ANONYMIZATION_PEPPER: string } +// Optionale SMTP-Konfiguration (Fallback für Tenants ohne eigene SMTP-Config) +export interface SmtpEnvVars { + SMTP_HOST?: string + SMTP_PORT?: string + SMTP_SECURE?: string + SMTP_USER?: string + SMTP_PASS?: string + SMTP_FROM_ADDRESS?: string + SMTP_FROM_NAME?: string +} + +export function getSmtpConfig(): SmtpEnvVars { + return { + SMTP_HOST: process.env.SMTP_HOST, + SMTP_PORT: process.env.SMTP_PORT, + SMTP_SECURE: process.env.SMTP_SECURE, + SMTP_USER: process.env.SMTP_USER, + SMTP_PASS: process.env.SMTP_PASS, + SMTP_FROM_ADDRESS: process.env.SMTP_FROM_ADDRESS, + SMTP_FROM_NAME: process.env.SMTP_FROM_NAME, + } +} + const FORBIDDEN_VALUES = [ '', 'default-pepper-change-me', diff --git a/src/lib/redis.ts b/src/lib/redis.ts index d0a5243..8d114c6 100644 --- a/src/lib/redis.ts +++ b/src/lib/redis.ts @@ -12,7 +12,6 @@ const getRedisClient = () => { host, port, maxRetriesPerRequest: 3, - retryDelayOnFailover: 100, lazyConnect: true, }) } diff --git a/src/lib/search.ts b/src/lib/search.ts index 9305511..e5e7e7a 100644 --- a/src/lib/search.ts +++ b/src/lib/search.ts @@ -41,10 +41,10 @@ export interface SearchResultItem { excerpt: string | null publishedAt: string | null type: string - category: { + categories: Array<{ name: string slug: string - } | null + }> } export interface SuggestionParams { @@ -365,10 +365,11 @@ export async function searchPosts( excerpt: post.excerpt || null, publishedAt: post.publishedAt || null, type: (post as Post & { type?: string }).type || 'blog', - category: - post.category && typeof post.category === 'object' - ? { name: post.category.name, slug: post.category.slug } - : null, + categories: Array.isArray(post.categories) + ? post.categories + .filter((cat): cat is Category => cat !== null && typeof cat === 'object' && 'name' in cat) + .map((cat) => ({ name: cat.name, slug: cat.slug })) + : [], })), total: result.totalDocs, query, diff --git a/src/migrations/20251206_134750_tenant_email_config.json b/src/migrations/20251206_134750_tenant_email_config.json new file mode 100644 index 0000000..6bf6278 --- /dev/null +++ b/src/migrations/20251206_134750_tenant_email_config.json @@ -0,0 +1,14282 @@ +{ + "version": "7", + "dialect": "postgresql", + "tables": { + "public.users_tenants": { + "name": "users_tenants", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "users_tenants_order_idx": { + "name": "users_tenants_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_tenants_parent_id_idx": { + "name": "users_tenants_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_tenants_tenant_idx": { + "name": "users_tenants_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "users_tenants_tenant_id_tenants_id_fk": { + "name": "users_tenants_tenant_id_tenants_id_fk", + "tableFrom": "users_tenants", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "users_tenants_parent_id_fk": { + "name": "users_tenants_parent_id_fk", + "tableFrom": "users_tenants", + "tableTo": "users", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users_sessions": { + "name": "users_sessions", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "users_sessions_order_idx": { + "name": "users_sessions_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_sessions_parent_id_idx": { + "name": "users_sessions_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "users_sessions_parent_id_fk": { + "name": "users_sessions_parent_id_fk", + "tableFrom": "users_sessions", + "tableTo": "users", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "is_super_admin": { + "name": "is_super_admin", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "reset_password_token": { + "name": "reset_password_token", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "reset_password_expiration": { + "name": "reset_password_expiration", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "salt": { + "name": "salt", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "hash": { + "name": "hash", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "login_attempts": { + "name": "login_attempts", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "lock_until": { + "name": "lock_until", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "users_updated_at_idx": { + "name": "users_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_created_at_idx": { + "name": "users_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_email_idx": { + "name": "users_email_idx", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.media": { + "name": "media", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "alt": { + "name": "alt", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "caption": { + "name": "caption", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "credit": { + "name": "credit", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "thumbnail_u_r_l": { + "name": "thumbnail_u_r_l", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "filename": { + "name": "filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "filesize": { + "name": "filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "height": { + "name": "height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "focal_x": { + "name": "focal_x", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "focal_y": { + "name": "focal_y", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_url": { + "name": "sizes_thumbnail_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_width": { + "name": "sizes_thumbnail_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_height": { + "name": "sizes_thumbnail_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_mime_type": { + "name": "sizes_thumbnail_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_filesize": { + "name": "sizes_thumbnail_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_filename": { + "name": "sizes_thumbnail_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_small_url": { + "name": "sizes_small_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_small_width": { + "name": "sizes_small_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_small_height": { + "name": "sizes_small_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_small_mime_type": { + "name": "sizes_small_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_small_filesize": { + "name": "sizes_small_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_small_filename": { + "name": "sizes_small_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_url": { + "name": "sizes_medium_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_width": { + "name": "sizes_medium_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_height": { + "name": "sizes_medium_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_mime_type": { + "name": "sizes_medium_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_filesize": { + "name": "sizes_medium_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_filename": { + "name": "sizes_medium_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_url": { + "name": "sizes_large_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_width": { + "name": "sizes_large_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_height": { + "name": "sizes_large_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_mime_type": { + "name": "sizes_large_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_filesize": { + "name": "sizes_large_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_filename": { + "name": "sizes_large_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_url": { + "name": "sizes_xlarge_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_width": { + "name": "sizes_xlarge_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_height": { + "name": "sizes_xlarge_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_mime_type": { + "name": "sizes_xlarge_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_filesize": { + "name": "sizes_xlarge_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_filename": { + "name": "sizes_xlarge_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_url": { + "name": "sizes_2k_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_width": { + "name": "sizes_2k_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_height": { + "name": "sizes_2k_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_mime_type": { + "name": "sizes_2k_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_filesize": { + "name": "sizes_2k_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_filename": { + "name": "sizes_2k_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_og_url": { + "name": "sizes_og_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_og_width": { + "name": "sizes_og_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_og_height": { + "name": "sizes_og_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_og_mime_type": { + "name": "sizes_og_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_og_filesize": { + "name": "sizes_og_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_og_filename": { + "name": "sizes_og_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_url": { + "name": "sizes_medium_avif_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_width": { + "name": "sizes_medium_avif_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_height": { + "name": "sizes_medium_avif_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_mime_type": { + "name": "sizes_medium_avif_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_filesize": { + "name": "sizes_medium_avif_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_filename": { + "name": "sizes_medium_avif_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_url": { + "name": "sizes_large_avif_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_width": { + "name": "sizes_large_avif_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_height": { + "name": "sizes_large_avif_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_mime_type": { + "name": "sizes_large_avif_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_filesize": { + "name": "sizes_large_avif_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_filename": { + "name": "sizes_large_avif_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_url": { + "name": "sizes_xlarge_avif_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_width": { + "name": "sizes_xlarge_avif_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_height": { + "name": "sizes_xlarge_avif_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_mime_type": { + "name": "sizes_xlarge_avif_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_filesize": { + "name": "sizes_xlarge_avif_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_filename": { + "name": "sizes_xlarge_avif_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "media_tenant_idx": { + "name": "media_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_updated_at_idx": { + "name": "media_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_created_at_idx": { + "name": "media_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_filename_idx": { + "name": "media_filename_idx", + "columns": [ + { + "expression": "filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_thumbnail_sizes_thumbnail_filename_idx": { + "name": "media_sizes_thumbnail_sizes_thumbnail_filename_idx", + "columns": [ + { + "expression": "sizes_thumbnail_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_small_sizes_small_filename_idx": { + "name": "media_sizes_small_sizes_small_filename_idx", + "columns": [ + { + "expression": "sizes_small_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_medium_sizes_medium_filename_idx": { + "name": "media_sizes_medium_sizes_medium_filename_idx", + "columns": [ + { + "expression": "sizes_medium_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_large_sizes_large_filename_idx": { + "name": "media_sizes_large_sizes_large_filename_idx", + "columns": [ + { + "expression": "sizes_large_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_xlarge_sizes_xlarge_filename_idx": { + "name": "media_sizes_xlarge_sizes_xlarge_filename_idx", + "columns": [ + { + "expression": "sizes_xlarge_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_2k_sizes_2k_filename_idx": { + "name": "media_sizes_2k_sizes_2k_filename_idx", + "columns": [ + { + "expression": "sizes_2k_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_og_sizes_og_filename_idx": { + "name": "media_sizes_og_sizes_og_filename_idx", + "columns": [ + { + "expression": "sizes_og_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_medium_avif_sizes_medium_avif_filename_idx": { + "name": "media_sizes_medium_avif_sizes_medium_avif_filename_idx", + "columns": [ + { + "expression": "sizes_medium_avif_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_large_avif_sizes_large_avif_filename_idx": { + "name": "media_sizes_large_avif_sizes_large_avif_filename_idx", + "columns": [ + { + "expression": "sizes_large_avif_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_xlarge_avif_sizes_xlarge_avif_filename_idx": { + "name": "media_sizes_xlarge_avif_sizes_xlarge_avif_filename_idx", + "columns": [ + { + "expression": "sizes_xlarge_avif_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "media_tenant_id_tenants_id_fk": { + "name": "media_tenant_id_tenants_id_fk", + "tableFrom": "media", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.media_texts": { + "name": "media_texts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "media_texts_order_parent": { + "name": "media_texts_order_parent", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "media_texts_parent_fk": { + "name": "media_texts_parent_fk", + "tableFrom": "media_texts", + "tableTo": "media", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tenants_domains": { + "name": "tenants_domains", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "domain": { + "name": "domain", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tenants_domains_order_idx": { + "name": "tenants_domains_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "tenants_domains_parent_id_idx": { + "name": "tenants_domains_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "tenants_domains_parent_id_fk": { + "name": "tenants_domains_parent_id_fk", + "tableFrom": "tenants_domains", + "tableTo": "tenants", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tenants": { + "name": "tenants", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "email_from_address": { + "name": "email_from_address", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_from_name": { + "name": "email_from_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_reply_to": { + "name": "email_reply_to", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_use_custom_smtp": { + "name": "email_use_custom_smtp", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "email_smtp_host": { + "name": "email_smtp_host", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_smtp_port": { + "name": "email_smtp_port", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 587 + }, + "email_smtp_secure": { + "name": "email_smtp_secure", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "email_smtp_user": { + "name": "email_smtp_user", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_smtp_pass": { + "name": "email_smtp_pass", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "tenants_slug_idx": { + "name": "tenants_slug_idx", + "columns": [ + { + "expression": "slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "tenants_updated_at_idx": { + "name": "tenants_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "tenants_created_at_idx": { + "name": "tenants_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_hero_block": { + "name": "pages_blocks_hero_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "background_image_id": { + "name": "background_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "alignment": { + "name": "alignment", + "type": "enum_pages_blocks_hero_block_alignment", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'center'" + }, + "overlay": { + "name": "overlay", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "cta_link": { + "name": "cta_link", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_style": { + "name": "cta_style", + "type": "enum_pages_blocks_hero_block_cta_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'primary'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_hero_block_order_idx": { + "name": "pages_blocks_hero_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_hero_block_parent_id_idx": { + "name": "pages_blocks_hero_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_hero_block_path_idx": { + "name": "pages_blocks_hero_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_hero_block_background_image_idx": { + "name": "pages_blocks_hero_block_background_image_idx", + "columns": [ + { + "expression": "background_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_hero_block_background_image_id_media_id_fk": { + "name": "pages_blocks_hero_block_background_image_id_media_id_fk", + "tableFrom": "pages_blocks_hero_block", + "tableTo": "media", + "columnsFrom": [ + "background_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_hero_block_parent_id_fk": { + "name": "pages_blocks_hero_block_parent_id_fk", + "tableFrom": "pages_blocks_hero_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_hero_block_locales": { + "name": "pages_blocks_hero_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "subline": { + "name": "subline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_text": { + "name": "cta_text", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_hero_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_hero_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_hero_block_locales_parent_id_fk": { + "name": "pages_blocks_hero_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_hero_block_locales", + "tableTo": "pages_blocks_hero_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_text_block": { + "name": "pages_blocks_text_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "width": { + "name": "width", + "type": "enum_pages_blocks_text_block_width", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'medium'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_text_block_order_idx": { + "name": "pages_blocks_text_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_text_block_parent_id_idx": { + "name": "pages_blocks_text_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_text_block_path_idx": { + "name": "pages_blocks_text_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_text_block_parent_id_fk": { + "name": "pages_blocks_text_block_parent_id_fk", + "tableFrom": "pages_blocks_text_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_text_block_locales": { + "name": "pages_blocks_text_block_locales", + "schema": "", + "columns": { + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_text_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_text_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_text_block_locales_parent_id_fk": { + "name": "pages_blocks_text_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_text_block_locales", + "tableTo": "pages_blocks_text_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_image_text_block": { + "name": "pages_blocks_image_text_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "image_position": { + "name": "image_position", + "type": "enum_pages_blocks_image_text_block_image_position", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'left'" + }, + "cta_link": { + "name": "cta_link", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_image_text_block_order_idx": { + "name": "pages_blocks_image_text_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_image_text_block_parent_id_idx": { + "name": "pages_blocks_image_text_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_image_text_block_path_idx": { + "name": "pages_blocks_image_text_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_image_text_block_image_idx": { + "name": "pages_blocks_image_text_block_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_image_text_block_image_id_media_id_fk": { + "name": "pages_blocks_image_text_block_image_id_media_id_fk", + "tableFrom": "pages_blocks_image_text_block", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_image_text_block_parent_id_fk": { + "name": "pages_blocks_image_text_block_parent_id_fk", + "tableFrom": "pages_blocks_image_text_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_image_text_block_locales": { + "name": "pages_blocks_image_text_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "cta_text": { + "name": "cta_text", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_image_text_block_locales_locale_parent_id_uniqu": { + "name": "pages_blocks_image_text_block_locales_locale_parent_id_uniqu", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_image_text_block_locales_parent_id_fk": { + "name": "pages_blocks_image_text_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_image_text_block_locales", + "tableTo": "pages_blocks_image_text_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block_cards": { + "name": "pages_blocks_card_grid_block_cards", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "link": { + "name": "link", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_card_grid_block_cards_order_idx": { + "name": "pages_blocks_card_grid_block_cards_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_cards_parent_id_idx": { + "name": "pages_blocks_card_grid_block_cards_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_cards_image_idx": { + "name": "pages_blocks_card_grid_block_cards_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_cards_image_id_media_id_fk": { + "name": "pages_blocks_card_grid_block_cards_image_id_media_id_fk", + "tableFrom": "pages_blocks_card_grid_block_cards", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_card_grid_block_cards_parent_id_fk": { + "name": "pages_blocks_card_grid_block_cards_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block_cards", + "tableTo": "pages_blocks_card_grid_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block_cards_locales": { + "name": "pages_blocks_card_grid_block_cards_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "link_text": { + "name": "link_text", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'mehr'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_card_grid_block_cards_locales_locale_parent_id_": { + "name": "pages_blocks_card_grid_block_cards_locales_locale_parent_id_", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_cards_locales_parent_id_fk": { + "name": "pages_blocks_card_grid_block_cards_locales_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block_cards_locales", + "tableTo": "pages_blocks_card_grid_block_cards", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block": { + "name": "pages_blocks_card_grid_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "columns": { + "name": "columns", + "type": "enum_pages_blocks_card_grid_block_columns", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'3'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_card_grid_block_order_idx": { + "name": "pages_blocks_card_grid_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_parent_id_idx": { + "name": "pages_blocks_card_grid_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_path_idx": { + "name": "pages_blocks_card_grid_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_parent_id_fk": { + "name": "pages_blocks_card_grid_block_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block_locales": { + "name": "pages_blocks_card_grid_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_card_grid_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_card_grid_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_locales_parent_id_fk": { + "name": "pages_blocks_card_grid_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block_locales", + "tableTo": "pages_blocks_card_grid_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_quote_block": { + "name": "pages_blocks_quote_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "author": { + "name": "author", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "style": { + "name": "style", + "type": "enum_pages_blocks_quote_block_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'simple'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_quote_block_order_idx": { + "name": "pages_blocks_quote_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_quote_block_parent_id_idx": { + "name": "pages_blocks_quote_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_quote_block_path_idx": { + "name": "pages_blocks_quote_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_quote_block_image_idx": { + "name": "pages_blocks_quote_block_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_quote_block_image_id_media_id_fk": { + "name": "pages_blocks_quote_block_image_id_media_id_fk", + "tableFrom": "pages_blocks_quote_block", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_quote_block_parent_id_fk": { + "name": "pages_blocks_quote_block_parent_id_fk", + "tableFrom": "pages_blocks_quote_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_quote_block_locales": { + "name": "pages_blocks_quote_block_locales", + "schema": "", + "columns": { + "quote": { + "name": "quote", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_quote_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_quote_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_quote_block_locales_parent_id_fk": { + "name": "pages_blocks_quote_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_quote_block_locales", + "tableTo": "pages_blocks_quote_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block_buttons": { + "name": "pages_blocks_cta_block_buttons", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "link": { + "name": "link", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "style": { + "name": "style", + "type": "enum_pages_blocks_cta_block_buttons_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'primary'" + } + }, + "indexes": { + "pages_blocks_cta_block_buttons_order_idx": { + "name": "pages_blocks_cta_block_buttons_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_cta_block_buttons_parent_id_idx": { + "name": "pages_blocks_cta_block_buttons_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_buttons_parent_id_fk": { + "name": "pages_blocks_cta_block_buttons_parent_id_fk", + "tableFrom": "pages_blocks_cta_block_buttons", + "tableTo": "pages_blocks_cta_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block_buttons_locales": { + "name": "pages_blocks_cta_block_buttons_locales", + "schema": "", + "columns": { + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_cta_block_buttons_locales_locale_parent_id_uniq": { + "name": "pages_blocks_cta_block_buttons_locales_locale_parent_id_uniq", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_buttons_locales_parent_id_fk": { + "name": "pages_blocks_cta_block_buttons_locales_parent_id_fk", + "tableFrom": "pages_blocks_cta_block_buttons_locales", + "tableTo": "pages_blocks_cta_block_buttons", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block": { + "name": "pages_blocks_cta_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_cta_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'dark'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_cta_block_order_idx": { + "name": "pages_blocks_cta_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_cta_block_parent_id_idx": { + "name": "pages_blocks_cta_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_cta_block_path_idx": { + "name": "pages_blocks_cta_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_parent_id_fk": { + "name": "pages_blocks_cta_block_parent_id_fk", + "tableFrom": "pages_blocks_cta_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block_locales": { + "name": "pages_blocks_cta_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_cta_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_cta_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_locales_parent_id_fk": { + "name": "pages_blocks_cta_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_cta_block_locales", + "tableTo": "pages_blocks_cta_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_contact_form_block": { + "name": "pages_blocks_contact_form_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "recipient_email": { + "name": "recipient_email", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'info@porwoll.de'" + }, + "show_phone": { + "name": "show_phone", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_address": { + "name": "show_address", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_socials": { + "name": "show_socials", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_contact_form_block_order_idx": { + "name": "pages_blocks_contact_form_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_contact_form_block_parent_id_idx": { + "name": "pages_blocks_contact_form_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_contact_form_block_path_idx": { + "name": "pages_blocks_contact_form_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_contact_form_block_parent_id_fk": { + "name": "pages_blocks_contact_form_block_parent_id_fk", + "tableFrom": "pages_blocks_contact_form_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_contact_form_block_locales": { + "name": "pages_blocks_contact_form_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Kontakt'" + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_contact_form_block_locales_locale_parent_id_uni": { + "name": "pages_blocks_contact_form_block_locales_locale_parent_id_uni", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_contact_form_block_locales_parent_id_fk": { + "name": "pages_blocks_contact_form_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_contact_form_block_locales", + "tableTo": "pages_blocks_contact_form_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block_items": { + "name": "pages_blocks_timeline_block_items", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "year": { + "name": "year", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "icon": { + "name": "icon", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "link_href": { + "name": "link_href", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_timeline_block_items_order_idx": { + "name": "pages_blocks_timeline_block_items_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_items_parent_id_idx": { + "name": "pages_blocks_timeline_block_items_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_items_image_idx": { + "name": "pages_blocks_timeline_block_items_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_items_image_id_media_id_fk": { + "name": "pages_blocks_timeline_block_items_image_id_media_id_fk", + "tableFrom": "pages_blocks_timeline_block_items", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_timeline_block_items_parent_id_fk": { + "name": "pages_blocks_timeline_block_items_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block_items", + "tableTo": "pages_blocks_timeline_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block_items_locales": { + "name": "pages_blocks_timeline_block_items_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "link_label": { + "name": "link_label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_timeline_block_items_locales_locale_parent_id_u": { + "name": "pages_blocks_timeline_block_items_locales_locale_parent_id_u", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_items_locales_parent_id_fk": { + "name": "pages_blocks_timeline_block_items_locales_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block_items_locales", + "tableTo": "pages_blocks_timeline_block_items", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block": { + "name": "pages_blocks_timeline_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_timeline_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'vertical'" + }, + "show_connector": { + "name": "show_connector", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "marker_style": { + "name": "marker_style", + "type": "enum_pages_blocks_timeline_block_marker_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'dot'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_timeline_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'white'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_timeline_block_order_idx": { + "name": "pages_blocks_timeline_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_parent_id_idx": { + "name": "pages_blocks_timeline_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_path_idx": { + "name": "pages_blocks_timeline_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_parent_id_fk": { + "name": "pages_blocks_timeline_block_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block_locales": { + "name": "pages_blocks_timeline_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_timeline_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_timeline_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_locales_parent_id_fk": { + "name": "pages_blocks_timeline_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block_locales", + "tableTo": "pages_blocks_timeline_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_divider_block": { + "name": "pages_blocks_divider_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "style": { + "name": "style", + "type": "enum_pages_blocks_divider_block_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'space'" + }, + "spacing": { + "name": "spacing", + "type": "enum_pages_blocks_divider_block_spacing", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'medium'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_divider_block_order_idx": { + "name": "pages_blocks_divider_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_divider_block_parent_id_idx": { + "name": "pages_blocks_divider_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_divider_block_path_idx": { + "name": "pages_blocks_divider_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_divider_block_parent_id_fk": { + "name": "pages_blocks_divider_block_parent_id_fk", + "tableFrom": "pages_blocks_divider_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_video_block": { + "name": "pages_blocks_video_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "aspect_ratio": { + "name": "aspect_ratio", + "type": "enum_pages_blocks_video_block_aspect_ratio", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'16:9'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_video_block_order_idx": { + "name": "pages_blocks_video_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_video_block_parent_id_idx": { + "name": "pages_blocks_video_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_video_block_path_idx": { + "name": "pages_blocks_video_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_video_block_parent_id_fk": { + "name": "pages_blocks_video_block_parent_id_fk", + "tableFrom": "pages_blocks_video_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_video_block_locales": { + "name": "pages_blocks_video_block_locales", + "schema": "", + "columns": { + "caption": { + "name": "caption", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_video_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_video_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_video_block_locales_parent_id_fk": { + "name": "pages_blocks_video_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_video_block_locales", + "tableTo": "pages_blocks_video_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_posts_list_block": { + "name": "pages_blocks_posts_list_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "post_type": { + "name": "post_type", + "type": "enum_pages_blocks_posts_list_block_post_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'blog'" + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_posts_list_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'grid'" + }, + "columns": { + "name": "columns", + "type": "enum_pages_blocks_posts_list_block_columns", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'3'" + }, + "limit": { + "name": "limit", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 6 + }, + "show_featured_only": { + "name": "show_featured_only", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_excerpt": { + "name": "show_excerpt", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_date": { + "name": "show_date", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_author": { + "name": "show_author", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_category": { + "name": "show_category", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_pagination": { + "name": "show_pagination", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_read_more": { + "name": "show_read_more", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "read_more_link": { + "name": "read_more_link", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'/blog'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_posts_list_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'white'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_posts_list_block_order_idx": { + "name": "pages_blocks_posts_list_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_posts_list_block_parent_id_idx": { + "name": "pages_blocks_posts_list_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_posts_list_block_path_idx": { + "name": "pages_blocks_posts_list_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_posts_list_block_parent_id_fk": { + "name": "pages_blocks_posts_list_block_parent_id_fk", + "tableFrom": "pages_blocks_posts_list_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_posts_list_block_locales": { + "name": "pages_blocks_posts_list_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "read_more_label": { + "name": "read_more_label", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Alle Beiträge anzeigen'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_posts_list_block_locales_locale_parent_id_uniqu": { + "name": "pages_blocks_posts_list_block_locales_locale_parent_id_uniqu", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_posts_list_block_locales_parent_id_fk": { + "name": "pages_blocks_posts_list_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_posts_list_block_locales", + "tableTo": "pages_blocks_posts_list_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_testimonials_block": { + "name": "pages_blocks_testimonials_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_testimonials_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'slider'" + }, + "columns": { + "name": "columns", + "type": "enum_pages_blocks_testimonials_block_columns", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'3'" + }, + "display_mode": { + "name": "display_mode", + "type": "enum_pages_blocks_testimonials_block_display_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'all'" + }, + "limit": { + "name": "limit", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 6 + }, + "show_rating": { + "name": "show_rating", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_image": { + "name": "show_image", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_company": { + "name": "show_company", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_source": { + "name": "show_source", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "autoplay": { + "name": "autoplay", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "autoplay_speed": { + "name": "autoplay_speed", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 5000 + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_testimonials_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'light'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_testimonials_block_order_idx": { + "name": "pages_blocks_testimonials_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_testimonials_block_parent_id_idx": { + "name": "pages_blocks_testimonials_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_testimonials_block_path_idx": { + "name": "pages_blocks_testimonials_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_testimonials_block_parent_id_fk": { + "name": "pages_blocks_testimonials_block_parent_id_fk", + "tableFrom": "pages_blocks_testimonials_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_testimonials_block_locales": { + "name": "pages_blocks_testimonials_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Das sagen unsere Kunden'" + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_testimonials_block_locales_locale_parent_id_uni": { + "name": "pages_blocks_testimonials_block_locales_locale_parent_id_uni", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_testimonials_block_locales_parent_id_fk": { + "name": "pages_blocks_testimonials_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_testimonials_block_locales", + "tableTo": "pages_blocks_testimonials_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_newsletter_block_available_interests": { + "name": "pages_blocks_newsletter_block_available_interests", + "schema": "", + "columns": { + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "enum_pages_blocks_newsletter_block_available_interests", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + } + }, + "indexes": { + "pages_blocks_newsletter_block_available_interests_order_idx": { + "name": "pages_blocks_newsletter_block_available_interests_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_available_interests_parent_idx": { + "name": "pages_blocks_newsletter_block_available_interests_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_newsletter_block_available_interests_parent_fk": { + "name": "pages_blocks_newsletter_block_available_interests_parent_fk", + "tableFrom": "pages_blocks_newsletter_block_available_interests", + "tableTo": "pages_blocks_newsletter_block", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_newsletter_block": { + "name": "pages_blocks_newsletter_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_newsletter_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'inline'" + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "image_position": { + "name": "image_position", + "type": "enum_pages_blocks_newsletter_block_image_position", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'left'" + }, + "collect_name": { + "name": "collect_name", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_interests": { + "name": "show_interests", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "privacy_link": { + "name": "privacy_link", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'/datenschutz'" + }, + "source": { + "name": "source", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'website'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_newsletter_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'accent'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_newsletter_block_order_idx": { + "name": "pages_blocks_newsletter_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_parent_id_idx": { + "name": "pages_blocks_newsletter_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_path_idx": { + "name": "pages_blocks_newsletter_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_image_idx": { + "name": "pages_blocks_newsletter_block_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_newsletter_block_image_id_media_id_fk": { + "name": "pages_blocks_newsletter_block_image_id_media_id_fk", + "tableFrom": "pages_blocks_newsletter_block", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_newsletter_block_parent_id_fk": { + "name": "pages_blocks_newsletter_block_parent_id_fk", + "tableFrom": "pages_blocks_newsletter_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_newsletter_block_locales": { + "name": "pages_blocks_newsletter_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Newsletter abonnieren'" + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Erhalten Sie regelmäßig Updates und Neuigkeiten direkt in Ihr Postfach.'" + }, + "button_text": { + "name": "button_text", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Anmelden'" + }, + "placeholder_email": { + "name": "placeholder_email", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Ihre E-Mail-Adresse'" + }, + "success_message": { + "name": "success_message", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Vielen Dank! Bitte bestätigen Sie Ihre E-Mail-Adresse über den Link in der Bestätigungsmail.'" + }, + "error_message": { + "name": "error_message", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.'" + }, + "privacy_text": { + "name": "privacy_text", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Mit der Anmeldung akzeptieren Sie unsere Datenschutzerklärung. Sie können sich jederzeit abmelden.'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_newsletter_block_locales_locale_parent_id_uniqu": { + "name": "pages_blocks_newsletter_block_locales_locale_parent_id_uniqu", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_newsletter_block_locales_parent_id_fk": { + "name": "pages_blocks_newsletter_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_newsletter_block_locales", + "tableTo": "pages_blocks_newsletter_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block_steps": { + "name": "pages_blocks_process_steps_block_steps", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "icon": { + "name": "icon", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_process_steps_block_steps_order_idx": { + "name": "pages_blocks_process_steps_block_steps_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_steps_parent_id_idx": { + "name": "pages_blocks_process_steps_block_steps_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_steps_image_idx": { + "name": "pages_blocks_process_steps_block_steps_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_steps_image_id_media_id_fk": { + "name": "pages_blocks_process_steps_block_steps_image_id_media_id_fk", + "tableFrom": "pages_blocks_process_steps_block_steps", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_process_steps_block_steps_parent_id_fk": { + "name": "pages_blocks_process_steps_block_steps_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block_steps", + "tableTo": "pages_blocks_process_steps_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block_steps_locales": { + "name": "pages_blocks_process_steps_block_steps_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_process_steps_block_steps_locales_locale_parent": { + "name": "pages_blocks_process_steps_block_steps_locales_locale_parent", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_steps_locales_parent_id_fk": { + "name": "pages_blocks_process_steps_block_steps_locales_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block_steps_locales", + "tableTo": "pages_blocks_process_steps_block_steps", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block": { + "name": "pages_blocks_process_steps_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_process_steps_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'horizontal'" + }, + "show_numbers": { + "name": "show_numbers", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_icons": { + "name": "show_icons", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "cta_show": { + "name": "cta_show", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "cta_href": { + "name": "cta_href", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_variant": { + "name": "cta_variant", + "type": "enum_pages_blocks_process_steps_block_cta_variant", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_process_steps_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'white'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_process_steps_block_order_idx": { + "name": "pages_blocks_process_steps_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_parent_id_idx": { + "name": "pages_blocks_process_steps_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_path_idx": { + "name": "pages_blocks_process_steps_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_parent_id_fk": { + "name": "pages_blocks_process_steps_block_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block_locales": { + "name": "pages_blocks_process_steps_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'So funktioniert es'" + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_label": { + "name": "cta_label", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Jetzt starten'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_process_steps_block_locales_locale_parent_id_un": { + "name": "pages_blocks_process_steps_block_locales_locale_parent_id_un", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_locales_parent_id_fk": { + "name": "pages_blocks_process_steps_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block_locales", + "tableTo": "pages_blocks_process_steps_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages": { + "name": "pages", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "hero_image_id": { + "name": "hero_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "seo_og_image_id": { + "name": "seo_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_pages_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'draft'" + }, + "published_at": { + "name": "published_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pages_tenant_idx": { + "name": "pages_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_hero_hero_image_idx": { + "name": "pages_hero_hero_image_idx", + "columns": [ + { + "expression": "hero_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_seo_seo_og_image_idx": { + "name": "pages_seo_seo_og_image_idx", + "columns": [ + { + "expression": "seo_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_updated_at_idx": { + "name": "pages_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_created_at_idx": { + "name": "pages_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_tenant_id_tenants_id_fk": { + "name": "pages_tenant_id_tenants_id_fk", + "tableFrom": "pages", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_hero_image_id_media_id_fk": { + "name": "pages_hero_image_id_media_id_fk", + "tableFrom": "pages", + "tableTo": "media", + "columnsFrom": [ + "hero_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_seo_og_image_id_media_id_fk": { + "name": "pages_seo_og_image_id_media_id_fk", + "tableFrom": "pages", + "tableTo": "media", + "columnsFrom": [ + "seo_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_locales": { + "name": "pages_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "hero_headline": { + "name": "hero_headline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "hero_subline": { + "name": "hero_subline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_locales_locale_parent_id_unique": { + "name": "pages_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_locales_parent_id_fk": { + "name": "pages_locales_parent_id_fk", + "tableFrom": "pages_locales", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_rels": { + "name": "pages_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "categories_id": { + "name": "categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "testimonials_id": { + "name": "testimonials_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_rels_order_idx": { + "name": "pages_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_parent_idx": { + "name": "pages_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_path_idx": { + "name": "pages_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_categories_id_idx": { + "name": "pages_rels_categories_id_idx", + "columns": [ + { + "expression": "categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_testimonials_id_idx": { + "name": "pages_rels_testimonials_id_idx", + "columns": [ + { + "expression": "testimonials_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_rels_parent_fk": { + "name": "pages_rels_parent_fk", + "tableFrom": "pages_rels", + "tableTo": "pages", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "pages_rels_categories_fk": { + "name": "pages_rels_categories_fk", + "tableFrom": "pages_rels", + "tableTo": "categories", + "columnsFrom": [ + "categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "pages_rels_testimonials_fk": { + "name": "pages_rels_testimonials_fk", + "tableFrom": "pages_rels", + "tableTo": "testimonials", + "columnsFrom": [ + "testimonials_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.posts": { + "name": "posts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "enum_posts_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'blog'" + }, + "is_featured": { + "name": "is_featured", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "featured_image_id": { + "name": "featured_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "author": { + "name": "author", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_posts_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'draft'" + }, + "published_at": { + "name": "published_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "seo_og_image_id": { + "name": "seo_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "posts_tenant_idx": { + "name": "posts_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_featured_image_idx": { + "name": "posts_featured_image_idx", + "columns": [ + { + "expression": "featured_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_seo_seo_og_image_idx": { + "name": "posts_seo_seo_og_image_idx", + "columns": [ + { + "expression": "seo_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_updated_at_idx": { + "name": "posts_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_created_at_idx": { + "name": "posts_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "posts_tenant_id_tenants_id_fk": { + "name": "posts_tenant_id_tenants_id_fk", + "tableFrom": "posts", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "posts_featured_image_id_media_id_fk": { + "name": "posts_featured_image_id_media_id_fk", + "tableFrom": "posts", + "tableTo": "media", + "columnsFrom": [ + "featured_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "posts_seo_og_image_id_media_id_fk": { + "name": "posts_seo_og_image_id_media_id_fk", + "tableFrom": "posts", + "tableTo": "media", + "columnsFrom": [ + "seo_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.posts_locales": { + "name": "posts_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "excerpt": { + "name": "excerpt", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "posts_locales_locale_parent_id_unique": { + "name": "posts_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "posts_locales_parent_id_fk": { + "name": "posts_locales_parent_id_fk", + "tableFrom": "posts_locales", + "tableTo": "posts", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.posts_rels": { + "name": "posts_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "categories_id": { + "name": "categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "posts_rels_order_idx": { + "name": "posts_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_rels_parent_idx": { + "name": "posts_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_rels_path_idx": { + "name": "posts_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_rels_categories_id_idx": { + "name": "posts_rels_categories_id_idx", + "columns": [ + { + "expression": "categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "posts_rels_parent_fk": { + "name": "posts_rels_parent_fk", + "tableFrom": "posts_rels", + "tableTo": "posts", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "posts_rels_categories_fk": { + "name": "posts_rels_categories_fk", + "tableFrom": "posts_rels", + "tableTo": "categories", + "columnsFrom": [ + "categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.categories": { + "name": "categories", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "categories_tenant_idx": { + "name": "categories_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "categories_updated_at_idx": { + "name": "categories_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "categories_created_at_idx": { + "name": "categories_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "categories_tenant_id_tenants_id_fk": { + "name": "categories_tenant_id_tenants_id_fk", + "tableFrom": "categories", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.categories_locales": { + "name": "categories_locales", + "schema": "", + "columns": { + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "categories_locales_locale_parent_id_unique": { + "name": "categories_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "categories_locales_parent_id_fk": { + "name": "categories_locales_parent_id_fk", + "tableFrom": "categories_locales", + "tableTo": "categories", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.social_links": { + "name": "social_links", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "platform": { + "name": "platform", + "type": "enum_social_links_platform", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "social_links_tenant_idx": { + "name": "social_links_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "social_links_updated_at_idx": { + "name": "social_links_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "social_links_created_at_idx": { + "name": "social_links_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "social_links_tenant_id_tenants_id_fk": { + "name": "social_links_tenant_id_tenants_id_fk", + "tableFrom": "social_links", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.testimonials": { + "name": "testimonials", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "author": { + "name": "author", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "company": { + "name": "company", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rating": { + "name": "rating", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "source": { + "name": "source", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "source_url": { + "name": "source_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "date": { + "name": "date", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "order": { + "name": "order", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "testimonials_tenant_idx": { + "name": "testimonials_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "testimonials_image_idx": { + "name": "testimonials_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "testimonials_updated_at_idx": { + "name": "testimonials_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "testimonials_created_at_idx": { + "name": "testimonials_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "testimonials_tenant_id_tenants_id_fk": { + "name": "testimonials_tenant_id_tenants_id_fk", + "tableFrom": "testimonials", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "testimonials_image_id_media_id_fk": { + "name": "testimonials_image_id_media_id_fk", + "tableFrom": "testimonials", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.testimonials_locales": { + "name": "testimonials_locales", + "schema": "", + "columns": { + "quote": { + "name": "quote", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "testimonials_locales_locale_parent_id_unique": { + "name": "testimonials_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "testimonials_locales_parent_id_fk": { + "name": "testimonials_locales_parent_id_fk", + "tableFrom": "testimonials_locales", + "tableTo": "testimonials", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.newsletter_subscribers_interests": { + "name": "newsletter_subscribers_interests", + "schema": "", + "columns": { + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "enum_newsletter_subscribers_interests", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + } + }, + "indexes": { + "newsletter_subscribers_interests_order_idx": { + "name": "newsletter_subscribers_interests_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "newsletter_subscribers_interests_parent_idx": { + "name": "newsletter_subscribers_interests_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "newsletter_subscribers_interests_parent_fk": { + "name": "newsletter_subscribers_interests_parent_fk", + "tableFrom": "newsletter_subscribers_interests", + "tableTo": "newsletter_subscribers", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.newsletter_subscribers": { + "name": "newsletter_subscribers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "first_name": { + "name": "first_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "last_name": { + "name": "last_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_newsletter_subscribers_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "source": { + "name": "source", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "subscribed_at": { + "name": "subscribed_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "unsubscribed_at": { + "name": "unsubscribed_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "confirmation_token": { + "name": "confirmation_token", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "ip_address": { + "name": "ip_address", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "newsletter_subscribers_tenant_idx": { + "name": "newsletter_subscribers_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "newsletter_subscribers_updated_at_idx": { + "name": "newsletter_subscribers_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "newsletter_subscribers_created_at_idx": { + "name": "newsletter_subscribers_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "newsletter_subscribers_tenant_id_tenants_id_fk": { + "name": "newsletter_subscribers_tenant_id_tenants_id_fk", + "tableFrom": "newsletter_subscribers", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolio_categories": { + "name": "portfolio_categories", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "cover_image_id": { + "name": "cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "order": { + "name": "order", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "portfolio_categories_tenant_idx": { + "name": "portfolio_categories_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolio_categories_cover_image_idx": { + "name": "portfolio_categories_cover_image_idx", + "columns": [ + { + "expression": "cover_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolio_categories_updated_at_idx": { + "name": "portfolio_categories_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolio_categories_created_at_idx": { + "name": "portfolio_categories_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolio_categories_tenant_id_tenants_id_fk": { + "name": "portfolio_categories_tenant_id_tenants_id_fk", + "tableFrom": "portfolio_categories", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolio_categories_cover_image_id_media_id_fk": { + "name": "portfolio_categories_cover_image_id_media_id_fk", + "tableFrom": "portfolio_categories", + "tableTo": "media", + "columnsFrom": [ + "cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolio_categories_locales": { + "name": "portfolio_categories_locales", + "schema": "", + "columns": { + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "portfolio_categories_locales_locale_parent_id_unique": { + "name": "portfolio_categories_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolio_categories_locales_parent_id_fk": { + "name": "portfolio_categories_locales_parent_id_fk", + "tableFrom": "portfolio_categories_locales", + "tableTo": "portfolio_categories", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_images": { + "name": "portfolios_images", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_highlight": { + "name": "is_highlight", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "portfolios_images_order_idx": { + "name": "portfolios_images_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_images_parent_id_idx": { + "name": "portfolios_images_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_images_image_idx": { + "name": "portfolios_images_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_images_image_id_media_id_fk": { + "name": "portfolios_images_image_id_media_id_fk", + "tableFrom": "portfolios_images", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_images_parent_id_fk": { + "name": "portfolios_images_parent_id_fk", + "tableFrom": "portfolios_images", + "tableTo": "portfolios", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_images_locales": { + "name": "portfolios_images_locales", + "schema": "", + "columns": { + "caption": { + "name": "caption", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "portfolios_images_locales_locale_parent_id_unique": { + "name": "portfolios_images_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_images_locales_parent_id_fk": { + "name": "portfolios_images_locales_parent_id_fk", + "tableFrom": "portfolios_images_locales", + "tableTo": "portfolios_images", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios": { + "name": "portfolios", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "category_id": { + "name": "category_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cover_image_id": { + "name": "cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_details_client": { + "name": "project_details_client", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "project_details_shooting_date": { + "name": "project_details_shooting_date", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_portfolios_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "is_featured": { + "name": "is_featured", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "published_at": { + "name": "published_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "order": { + "name": "order", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "seo_og_image_id": { + "name": "seo_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "portfolios_tenant_idx": { + "name": "portfolios_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_category_idx": { + "name": "portfolios_category_idx", + "columns": [ + { + "expression": "category_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_cover_image_idx": { + "name": "portfolios_cover_image_idx", + "columns": [ + { + "expression": "cover_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_seo_seo_og_image_idx": { + "name": "portfolios_seo_seo_og_image_idx", + "columns": [ + { + "expression": "seo_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_updated_at_idx": { + "name": "portfolios_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_created_at_idx": { + "name": "portfolios_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_tenant_id_tenants_id_fk": { + "name": "portfolios_tenant_id_tenants_id_fk", + "tableFrom": "portfolios", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_category_id_portfolio_categories_id_fk": { + "name": "portfolios_category_id_portfolio_categories_id_fk", + "tableFrom": "portfolios", + "tableTo": "portfolio_categories", + "columnsFrom": [ + "category_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_cover_image_id_media_id_fk": { + "name": "portfolios_cover_image_id_media_id_fk", + "tableFrom": "portfolios", + "tableTo": "media", + "columnsFrom": [ + "cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_seo_og_image_id_media_id_fk": { + "name": "portfolios_seo_og_image_id_media_id_fk", + "tableFrom": "portfolios", + "tableTo": "media", + "columnsFrom": [ + "seo_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_locales": { + "name": "portfolios_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "excerpt": { + "name": "excerpt", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "project_details_location": { + "name": "project_details_location", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "portfolios_locales_locale_parent_id_unique": { + "name": "portfolios_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_locales_parent_id_fk": { + "name": "portfolios_locales_parent_id_fk", + "tableFrom": "portfolios_locales", + "tableTo": "portfolios", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_texts": { + "name": "portfolios_texts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "portfolios_texts_order_parent": { + "name": "portfolios_texts_order_parent", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_texts_parent_fk": { + "name": "portfolios_texts_parent_fk", + "tableFrom": "portfolios_texts", + "tableTo": "portfolios", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cookie_configurations_enabled_categories": { + "name": "cookie_configurations_enabled_categories", + "schema": "", + "columns": { + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "enum_cookie_configurations_enabled_categories", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + } + }, + "indexes": { + "cookie_configurations_enabled_categories_order_idx": { + "name": "cookie_configurations_enabled_categories_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_configurations_enabled_categories_parent_idx": { + "name": "cookie_configurations_enabled_categories_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cookie_configurations_enabled_categories_parent_fk": { + "name": "cookie_configurations_enabled_categories_parent_fk", + "tableFrom": "cookie_configurations_enabled_categories", + "tableTo": "cookie_configurations", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cookie_configurations": { + "name": "cookie_configurations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "'Cookie-Einstellungen'" + }, + "revision": { + "name": "revision", + "type": "numeric", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "translations_de_banner_title": { + "name": "translations_de_banner_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Wir respektieren Ihre Privatsphäre'" + }, + "translations_de_banner_description": { + "name": "translations_de_banner_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Website verwendet Cookies, um Ihnen die bestmögliche Erfahrung zu bieten.'" + }, + "translations_de_accept_all_button": { + "name": "translations_de_accept_all_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Alle akzeptieren'" + }, + "translations_de_accept_necessary_button": { + "name": "translations_de_accept_necessary_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Nur notwendige'" + }, + "translations_de_settings_button": { + "name": "translations_de_settings_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Einstellungen'" + }, + "translations_de_save_button": { + "name": "translations_de_save_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Auswahl speichern'" + }, + "translations_de_privacy_policy_url": { + "name": "translations_de_privacy_policy_url", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'/datenschutz'" + }, + "translations_de_category_labels_necessary_title": { + "name": "translations_de_category_labels_necessary_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Notwendig'" + }, + "translations_de_category_labels_necessary_description": { + "name": "translations_de_category_labels_necessary_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies sind für die Grundfunktionen der Website erforderlich.'" + }, + "translations_de_category_labels_functional_title": { + "name": "translations_de_category_labels_functional_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Funktional'" + }, + "translations_de_category_labels_functional_description": { + "name": "translations_de_category_labels_functional_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies ermöglichen erweiterte Funktionen.'" + }, + "translations_de_category_labels_analytics_title": { + "name": "translations_de_category_labels_analytics_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Statistik'" + }, + "translations_de_category_labels_analytics_description": { + "name": "translations_de_category_labels_analytics_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies helfen uns zu verstehen, wie Besucher die Website nutzen.'" + }, + "translations_de_category_labels_marketing_title": { + "name": "translations_de_category_labels_marketing_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Marketing'" + }, + "translations_de_category_labels_marketing_description": { + "name": "translations_de_category_labels_marketing_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies werden für Werbezwecke verwendet.'" + }, + "styling_position": { + "name": "styling_position", + "type": "enum_cookie_configurations_styling_position", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'bottom'" + }, + "styling_theme": { + "name": "styling_theme", + "type": "enum_cookie_configurations_styling_theme", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'dark'" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "cookie_configurations_tenant_idx": { + "name": "cookie_configurations_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_configurations_updated_at_idx": { + "name": "cookie_configurations_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_configurations_created_at_idx": { + "name": "cookie_configurations_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cookie_configurations_tenant_id_tenants_id_fk": { + "name": "cookie_configurations_tenant_id_tenants_id_fk", + "tableFrom": "cookie_configurations", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cookie_inventory": { + "name": "cookie_inventory", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "enum_cookie_inventory_category", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "duration": { + "name": "duration", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "cookie_inventory_tenant_idx": { + "name": "cookie_inventory_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_inventory_updated_at_idx": { + "name": "cookie_inventory_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_inventory_created_at_idx": { + "name": "cookie_inventory_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cookie_inventory_tenant_id_tenants_id_fk": { + "name": "cookie_inventory_tenant_id_tenants_id_fk", + "tableFrom": "cookie_inventory", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.consent_logs": { + "name": "consent_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "consent_id": { + "name": "consent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "client_ref": { + "name": "client_ref", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "categories": { + "name": "categories", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "revision": { + "name": "revision", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "user_agent": { + "name": "user_agent", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "anonymized_ip": { + "name": "anonymized_ip", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "consent_logs_consent_id_idx": { + "name": "consent_logs_consent_id_idx", + "columns": [ + { + "expression": "consent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_tenant_idx": { + "name": "consent_logs_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_updated_at_idx": { + "name": "consent_logs_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_created_at_idx": { + "name": "consent_logs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "consent_logs_tenant_id_tenants_id_fk": { + "name": "consent_logs_tenant_id_tenants_id_fk", + "tableFrom": "consent_logs", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.privacy_policy_settings": { + "name": "privacy_policy_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "'Datenschutzerklärung'" + }, + "provider": { + "name": "provider", + "type": "enum_privacy_policy_settings_provider", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'alfright'" + }, + "alfright_tenant_id": { + "name": "alfright_tenant_id", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'alfright_schutzteam'" + }, + "alfright_api_key": { + "name": "alfright_api_key", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "alfright_language": { + "name": "alfright_language", + "type": "enum_privacy_policy_settings_alfright_language", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'de-de'" + }, + "alfright_iframe_height": { + "name": "alfright_iframe_height", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 4000 + }, + "styling_header_color": { + "name": "styling_header_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#ca8a04'" + }, + "styling_header_font": { + "name": "styling_header_font", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Inter, sans-serif'" + }, + "styling_header_size": { + "name": "styling_header_size", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'24px'" + }, + "styling_subheader_size": { + "name": "styling_subheader_size", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'18px'" + }, + "styling_font_color": { + "name": "styling_font_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#f3f4f6'" + }, + "styling_text_font": { + "name": "styling_text_font", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Inter, sans-serif'" + }, + "styling_text_size": { + "name": "styling_text_size", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'16px'" + }, + "styling_link_color": { + "name": "styling_link_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#ca8a04'" + }, + "styling_background_color": { + "name": "styling_background_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#111827'" + }, + "show_cookie_table": { + "name": "show_cookie_table", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "cookie_table_title": { + "name": "cookie_table_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Übersicht der verwendeten Cookies'" + }, + "cookie_table_description": { + "name": "cookie_table_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Ergänzend zur Datenschutzerklärung finden Sie hier eine detaillierte Übersicht aller auf dieser Website eingesetzten Cookies. Sie können Ihre Cookie-Einstellungen jederzeit über den Link \"Cookie-Einstellungen\" im Footer anpassen.'" + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Datenschutzerklärung'" + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Informationen zum Datenschutz und zur Verarbeitung Ihrer personenbezogenen Daten.'" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "privacy_policy_settings_tenant_idx": { + "name": "privacy_policy_settings_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "privacy_policy_settings_updated_at_idx": { + "name": "privacy_policy_settings_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "privacy_policy_settings_created_at_idx": { + "name": "privacy_policy_settings_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "privacy_policy_settings_tenant_id_tenants_id_fk": { + "name": "privacy_policy_settings_tenant_id_tenants_id_fk", + "tableFrom": "privacy_policy_settings", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_checkbox": { + "name": "forms_blocks_checkbox", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_checkbox_order_idx": { + "name": "forms_blocks_checkbox_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_checkbox_parent_id_idx": { + "name": "forms_blocks_checkbox_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_checkbox_path_idx": { + "name": "forms_blocks_checkbox_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_checkbox_parent_id_fk": { + "name": "forms_blocks_checkbox_parent_id_fk", + "tableFrom": "forms_blocks_checkbox", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_checkbox_locales": { + "name": "forms_blocks_checkbox_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_checkbox_locales_locale_parent_id_unique": { + "name": "forms_blocks_checkbox_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_checkbox_locales_parent_id_fk": { + "name": "forms_blocks_checkbox_locales_parent_id_fk", + "tableFrom": "forms_blocks_checkbox_locales", + "tableTo": "forms_blocks_checkbox", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_email": { + "name": "forms_blocks_email", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_email_order_idx": { + "name": "forms_blocks_email_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_email_parent_id_idx": { + "name": "forms_blocks_email_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_email_path_idx": { + "name": "forms_blocks_email_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_email_parent_id_fk": { + "name": "forms_blocks_email_parent_id_fk", + "tableFrom": "forms_blocks_email", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_email_locales": { + "name": "forms_blocks_email_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_email_locales_locale_parent_id_unique": { + "name": "forms_blocks_email_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_email_locales_parent_id_fk": { + "name": "forms_blocks_email_locales_parent_id_fk", + "tableFrom": "forms_blocks_email_locales", + "tableTo": "forms_blocks_email", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_message": { + "name": "forms_blocks_message", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_message_order_idx": { + "name": "forms_blocks_message_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_message_parent_id_idx": { + "name": "forms_blocks_message_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_message_path_idx": { + "name": "forms_blocks_message_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_message_parent_id_fk": { + "name": "forms_blocks_message_parent_id_fk", + "tableFrom": "forms_blocks_message", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_message_locales": { + "name": "forms_blocks_message_locales", + "schema": "", + "columns": { + "message": { + "name": "message", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_message_locales_locale_parent_id_unique": { + "name": "forms_blocks_message_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_message_locales_parent_id_fk": { + "name": "forms_blocks_message_locales_parent_id_fk", + "tableFrom": "forms_blocks_message_locales", + "tableTo": "forms_blocks_message", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_number": { + "name": "forms_blocks_number", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_number_order_idx": { + "name": "forms_blocks_number_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_number_parent_id_idx": { + "name": "forms_blocks_number_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_number_path_idx": { + "name": "forms_blocks_number_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_number_parent_id_fk": { + "name": "forms_blocks_number_parent_id_fk", + "tableFrom": "forms_blocks_number", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_number_locales": { + "name": "forms_blocks_number_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_number_locales_locale_parent_id_unique": { + "name": "forms_blocks_number_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_number_locales_parent_id_fk": { + "name": "forms_blocks_number_locales_parent_id_fk", + "tableFrom": "forms_blocks_number_locales", + "tableTo": "forms_blocks_number", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select_options": { + "name": "forms_blocks_select_options", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "value": { + "name": "value", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_select_options_order_idx": { + "name": "forms_blocks_select_options_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_select_options_parent_id_idx": { + "name": "forms_blocks_select_options_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_options_parent_id_fk": { + "name": "forms_blocks_select_options_parent_id_fk", + "tableFrom": "forms_blocks_select_options", + "tableTo": "forms_blocks_select", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select_options_locales": { + "name": "forms_blocks_select_options_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_select_options_locales_locale_parent_id_unique": { + "name": "forms_blocks_select_options_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_options_locales_parent_id_fk": { + "name": "forms_blocks_select_options_locales_parent_id_fk", + "tableFrom": "forms_blocks_select_options_locales", + "tableTo": "forms_blocks_select_options", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select": { + "name": "forms_blocks_select", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "placeholder": { + "name": "placeholder", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_select_order_idx": { + "name": "forms_blocks_select_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_select_parent_id_idx": { + "name": "forms_blocks_select_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_select_path_idx": { + "name": "forms_blocks_select_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_parent_id_fk": { + "name": "forms_blocks_select_parent_id_fk", + "tableFrom": "forms_blocks_select", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select_locales": { + "name": "forms_blocks_select_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_select_locales_locale_parent_id_unique": { + "name": "forms_blocks_select_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_locales_parent_id_fk": { + "name": "forms_blocks_select_locales_parent_id_fk", + "tableFrom": "forms_blocks_select_locales", + "tableTo": "forms_blocks_select", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_text": { + "name": "forms_blocks_text", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_text_order_idx": { + "name": "forms_blocks_text_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_text_parent_id_idx": { + "name": "forms_blocks_text_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_text_path_idx": { + "name": "forms_blocks_text_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_text_parent_id_fk": { + "name": "forms_blocks_text_parent_id_fk", + "tableFrom": "forms_blocks_text", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_text_locales": { + "name": "forms_blocks_text_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_text_locales_locale_parent_id_unique": { + "name": "forms_blocks_text_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_text_locales_parent_id_fk": { + "name": "forms_blocks_text_locales_parent_id_fk", + "tableFrom": "forms_blocks_text_locales", + "tableTo": "forms_blocks_text", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_textarea": { + "name": "forms_blocks_textarea", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_textarea_order_idx": { + "name": "forms_blocks_textarea_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_textarea_parent_id_idx": { + "name": "forms_blocks_textarea_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_textarea_path_idx": { + "name": "forms_blocks_textarea_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_textarea_parent_id_fk": { + "name": "forms_blocks_textarea_parent_id_fk", + "tableFrom": "forms_blocks_textarea", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_textarea_locales": { + "name": "forms_blocks_textarea_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_textarea_locales_locale_parent_id_unique": { + "name": "forms_blocks_textarea_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_textarea_locales_parent_id_fk": { + "name": "forms_blocks_textarea_locales_parent_id_fk", + "tableFrom": "forms_blocks_textarea_locales", + "tableTo": "forms_blocks_textarea", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_emails": { + "name": "forms_emails", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "email_to": { + "name": "email_to", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cc": { + "name": "cc", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "bcc": { + "name": "bcc", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "reply_to": { + "name": "reply_to", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_from": { + "name": "email_from", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_emails_order_idx": { + "name": "forms_emails_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_emails_parent_id_idx": { + "name": "forms_emails_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_emails_parent_id_fk": { + "name": "forms_emails_parent_id_fk", + "tableFrom": "forms_emails", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_emails_locales": { + "name": "forms_emails_locales", + "schema": "", + "columns": { + "subject": { + "name": "subject", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "'You''ve received a new message.'" + }, + "message": { + "name": "message", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_emails_locales_locale_parent_id_unique": { + "name": "forms_emails_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_emails_locales_parent_id_fk": { + "name": "forms_emails_locales_parent_id_fk", + "tableFrom": "forms_emails_locales", + "tableTo": "forms_emails", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms": { + "name": "forms", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "confirmation_type": { + "name": "confirmation_type", + "type": "enum_forms_confirmation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'message'" + }, + "redirect_type": { + "name": "redirect_type", + "type": "enum_forms_redirect_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'reference'" + }, + "redirect_url": { + "name": "redirect_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "forms_updated_at_idx": { + "name": "forms_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_created_at_idx": { + "name": "forms_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_locales": { + "name": "forms_locales", + "schema": "", + "columns": { + "submit_button_label": { + "name": "submit_button_label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "confirmation_message": { + "name": "confirmation_message", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_locales_locale_parent_id_unique": { + "name": "forms_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_locales_parent_id_fk": { + "name": "forms_locales_parent_id_fk", + "tableFrom": "forms_locales", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_rels": { + "name": "forms_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "pages_id": { + "name": "pages_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_rels_order_idx": { + "name": "forms_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_rels_parent_idx": { + "name": "forms_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_rels_path_idx": { + "name": "forms_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_rels_pages_id_idx": { + "name": "forms_rels_pages_id_idx", + "columns": [ + { + "expression": "pages_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_rels_parent_fk": { + "name": "forms_rels_parent_fk", + "tableFrom": "forms_rels", + "tableTo": "forms", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "forms_rels_pages_fk": { + "name": "forms_rels_pages_fk", + "tableFrom": "forms_rels", + "tableTo": "pages", + "columnsFrom": [ + "pages_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.form_submissions_submission_data": { + "name": "form_submissions_submission_data", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "field": { + "name": "field", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "form_submissions_submission_data_order_idx": { + "name": "form_submissions_submission_data_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "form_submissions_submission_data_parent_id_idx": { + "name": "form_submissions_submission_data_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "form_submissions_submission_data_parent_id_fk": { + "name": "form_submissions_submission_data_parent_id_fk", + "tableFrom": "form_submissions_submission_data", + "tableTo": "form_submissions", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.form_submissions": { + "name": "form_submissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "form_id": { + "name": "form_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "form_submissions_form_idx": { + "name": "form_submissions_form_idx", + "columns": [ + { + "expression": "form_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "form_submissions_updated_at_idx": { + "name": "form_submissions_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "form_submissions_created_at_idx": { + "name": "form_submissions_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "form_submissions_form_id_forms_id_fk": { + "name": "form_submissions_form_id_forms_id_fk", + "tableFrom": "form_submissions", + "tableTo": "forms", + "columnsFrom": [ + "form_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.redirects": { + "name": "redirects", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "from": { + "name": "from", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "to_type": { + "name": "to_type", + "type": "enum_redirects_to_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'reference'" + }, + "to_url": { + "name": "to_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "redirects_from_idx": { + "name": "redirects_from_idx", + "columns": [ + { + "expression": "from", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_updated_at_idx": { + "name": "redirects_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_created_at_idx": { + "name": "redirects_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.redirects_rels": { + "name": "redirects_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "pages_id": { + "name": "pages_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "redirects_rels_order_idx": { + "name": "redirects_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_rels_parent_idx": { + "name": "redirects_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_rels_path_idx": { + "name": "redirects_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_rels_pages_id_idx": { + "name": "redirects_rels_pages_id_idx", + "columns": [ + { + "expression": "pages_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "redirects_rels_parent_fk": { + "name": "redirects_rels_parent_fk", + "tableFrom": "redirects_rels", + "tableTo": "redirects", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "redirects_rels_pages_fk": { + "name": "redirects_rels_pages_fk", + "tableFrom": "redirects_rels", + "tableTo": "pages", + "columnsFrom": [ + "pages_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_kv": { + "name": "payload_kv", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "payload_kv_key_idx": { + "name": "payload_kv_key_idx", + "columns": [ + { + "expression": "key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_locked_documents": { + "name": "payload_locked_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "global_slug": { + "name": "global_slug", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "payload_locked_documents_global_slug_idx": { + "name": "payload_locked_documents_global_slug_idx", + "columns": [ + { + "expression": "global_slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_updated_at_idx": { + "name": "payload_locked_documents_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_created_at_idx": { + "name": "payload_locked_documents_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_locked_documents_rels": { + "name": "payload_locked_documents_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "users_id": { + "name": "users_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "media_id": { + "name": "media_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "tenants_id": { + "name": "tenants_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "pages_id": { + "name": "pages_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "posts_id": { + "name": "posts_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "categories_id": { + "name": "categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "social_links_id": { + "name": "social_links_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "testimonials_id": { + "name": "testimonials_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "newsletter_subscribers_id": { + "name": "newsletter_subscribers_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "portfolio_categories_id": { + "name": "portfolio_categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "portfolios_id": { + "name": "portfolios_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cookie_configurations_id": { + "name": "cookie_configurations_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cookie_inventory_id": { + "name": "cookie_inventory_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "consent_logs_id": { + "name": "consent_logs_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "privacy_policy_settings_id": { + "name": "privacy_policy_settings_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "forms_id": { + "name": "forms_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "form_submissions_id": { + "name": "form_submissions_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "redirects_id": { + "name": "redirects_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "payload_locked_documents_rels_order_idx": { + "name": "payload_locked_documents_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_parent_idx": { + "name": "payload_locked_documents_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_path_idx": { + "name": "payload_locked_documents_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_users_id_idx": { + "name": "payload_locked_documents_rels_users_id_idx", + "columns": [ + { + "expression": "users_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_media_id_idx": { + "name": "payload_locked_documents_rels_media_id_idx", + "columns": [ + { + "expression": "media_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_tenants_id_idx": { + "name": "payload_locked_documents_rels_tenants_id_idx", + "columns": [ + { + "expression": "tenants_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_pages_id_idx": { + "name": "payload_locked_documents_rels_pages_id_idx", + "columns": [ + { + "expression": "pages_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_posts_id_idx": { + "name": "payload_locked_documents_rels_posts_id_idx", + "columns": [ + { + "expression": "posts_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_categories_id_idx": { + "name": "payload_locked_documents_rels_categories_id_idx", + "columns": [ + { + "expression": "categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_social_links_id_idx": { + "name": "payload_locked_documents_rels_social_links_id_idx", + "columns": [ + { + "expression": "social_links_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_testimonials_id_idx": { + "name": "payload_locked_documents_rels_testimonials_id_idx", + "columns": [ + { + "expression": "testimonials_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_newsletter_subscribers_id_idx": { + "name": "payload_locked_documents_rels_newsletter_subscribers_id_idx", + "columns": [ + { + "expression": "newsletter_subscribers_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_portfolio_categories_id_idx": { + "name": "payload_locked_documents_rels_portfolio_categories_id_idx", + "columns": [ + { + "expression": "portfolio_categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_portfolios_id_idx": { + "name": "payload_locked_documents_rels_portfolios_id_idx", + "columns": [ + { + "expression": "portfolios_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_cookie_configurations_id_idx": { + "name": "payload_locked_documents_rels_cookie_configurations_id_idx", + "columns": [ + { + "expression": "cookie_configurations_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_cookie_inventory_id_idx": { + "name": "payload_locked_documents_rels_cookie_inventory_id_idx", + "columns": [ + { + "expression": "cookie_inventory_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_consent_logs_id_idx": { + "name": "payload_locked_documents_rels_consent_logs_id_idx", + "columns": [ + { + "expression": "consent_logs_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_privacy_policy_settings_id_idx": { + "name": "payload_locked_documents_rels_privacy_policy_settings_id_idx", + "columns": [ + { + "expression": "privacy_policy_settings_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_forms_id_idx": { + "name": "payload_locked_documents_rels_forms_id_idx", + "columns": [ + { + "expression": "forms_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_form_submissions_id_idx": { + "name": "payload_locked_documents_rels_form_submissions_id_idx", + "columns": [ + { + "expression": "form_submissions_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_redirects_id_idx": { + "name": "payload_locked_documents_rels_redirects_id_idx", + "columns": [ + { + "expression": "redirects_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "payload_locked_documents_rels_parent_fk": { + "name": "payload_locked_documents_rels_parent_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "payload_locked_documents", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_users_fk": { + "name": "payload_locked_documents_rels_users_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "users", + "columnsFrom": [ + "users_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_media_fk": { + "name": "payload_locked_documents_rels_media_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "media", + "columnsFrom": [ + "media_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_tenants_fk": { + "name": "payload_locked_documents_rels_tenants_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "tenants", + "columnsFrom": [ + "tenants_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_pages_fk": { + "name": "payload_locked_documents_rels_pages_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "pages", + "columnsFrom": [ + "pages_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_posts_fk": { + "name": "payload_locked_documents_rels_posts_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "posts", + "columnsFrom": [ + "posts_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_categories_fk": { + "name": "payload_locked_documents_rels_categories_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "categories", + "columnsFrom": [ + "categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_social_links_fk": { + "name": "payload_locked_documents_rels_social_links_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "social_links", + "columnsFrom": [ + "social_links_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_testimonials_fk": { + "name": "payload_locked_documents_rels_testimonials_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "testimonials", + "columnsFrom": [ + "testimonials_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_newsletter_subscribers_fk": { + "name": "payload_locked_documents_rels_newsletter_subscribers_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "newsletter_subscribers", + "columnsFrom": [ + "newsletter_subscribers_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_portfolio_categories_fk": { + "name": "payload_locked_documents_rels_portfolio_categories_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "portfolio_categories", + "columnsFrom": [ + "portfolio_categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_portfolios_fk": { + "name": "payload_locked_documents_rels_portfolios_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "portfolios", + "columnsFrom": [ + "portfolios_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_cookie_configurations_fk": { + "name": "payload_locked_documents_rels_cookie_configurations_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "cookie_configurations", + "columnsFrom": [ + "cookie_configurations_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_cookie_inventory_fk": { + "name": "payload_locked_documents_rels_cookie_inventory_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "cookie_inventory", + "columnsFrom": [ + "cookie_inventory_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_consent_logs_fk": { + "name": "payload_locked_documents_rels_consent_logs_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "consent_logs", + "columnsFrom": [ + "consent_logs_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_privacy_policy_settings_fk": { + "name": "payload_locked_documents_rels_privacy_policy_settings_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "privacy_policy_settings", + "columnsFrom": [ + "privacy_policy_settings_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_forms_fk": { + "name": "payload_locked_documents_rels_forms_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "forms", + "columnsFrom": [ + "forms_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_form_submissions_fk": { + "name": "payload_locked_documents_rels_form_submissions_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "form_submissions", + "columnsFrom": [ + "form_submissions_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_redirects_fk": { + "name": "payload_locked_documents_rels_redirects_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "redirects", + "columnsFrom": [ + "redirects_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_preferences": { + "name": "payload_preferences", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "value": { + "name": "value", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "payload_preferences_key_idx": { + "name": "payload_preferences_key_idx", + "columns": [ + { + "expression": "key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_updated_at_idx": { + "name": "payload_preferences_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_created_at_idx": { + "name": "payload_preferences_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_preferences_rels": { + "name": "payload_preferences_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "users_id": { + "name": "users_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "payload_preferences_rels_order_idx": { + "name": "payload_preferences_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_rels_parent_idx": { + "name": "payload_preferences_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_rels_path_idx": { + "name": "payload_preferences_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_rels_users_id_idx": { + "name": "payload_preferences_rels_users_id_idx", + "columns": [ + { + "expression": "users_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "payload_preferences_rels_parent_fk": { + "name": "payload_preferences_rels_parent_fk", + "tableFrom": "payload_preferences_rels", + "tableTo": "payload_preferences", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_preferences_rels_users_fk": { + "name": "payload_preferences_rels_users_fk", + "tableFrom": "payload_preferences_rels", + "tableTo": "users", + "columnsFrom": [ + "users_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_migrations": { + "name": "payload_migrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "batch": { + "name": "batch", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "payload_migrations_updated_at_idx": { + "name": "payload_migrations_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_migrations_created_at_idx": { + "name": "payload_migrations_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.site_settings": { + "name": "site_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "logo_id": { + "name": "logo_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "favicon_id": { + "name": "favicon_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_address": { + "name": "contact_address", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "footer_show_social_links": { + "name": "footer_show_social_links", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "seo_default_og_image_id": { + "name": "seo_default_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "site_settings_logo_idx": { + "name": "site_settings_logo_idx", + "columns": [ + { + "expression": "logo_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "site_settings_favicon_idx": { + "name": "site_settings_favicon_idx", + "columns": [ + { + "expression": "favicon_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "site_settings_seo_seo_default_og_image_idx": { + "name": "site_settings_seo_seo_default_og_image_idx", + "columns": [ + { + "expression": "seo_default_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "site_settings_logo_id_media_id_fk": { + "name": "site_settings_logo_id_media_id_fk", + "tableFrom": "site_settings", + "tableTo": "media", + "columnsFrom": [ + "logo_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "site_settings_favicon_id_media_id_fk": { + "name": "site_settings_favicon_id_media_id_fk", + "tableFrom": "site_settings", + "tableTo": "media", + "columnsFrom": [ + "favicon_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "site_settings_seo_default_og_image_id_media_id_fk": { + "name": "site_settings_seo_default_og_image_id_media_id_fk", + "tableFrom": "site_settings", + "tableTo": "media", + "columnsFrom": [ + "seo_default_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.site_settings_locales": { + "name": "site_settings_locales", + "schema": "", + "columns": { + "site_name": { + "name": "site_name", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'porwoll.de'" + }, + "site_tagline": { + "name": "site_tagline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "footer_copyright_text": { + "name": "footer_copyright_text", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_default_meta_title": { + "name": "seo_default_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_default_meta_description": { + "name": "seo_default_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "site_settings_locales_locale_parent_id_unique": { + "name": "site_settings_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "site_settings_locales_parent_id_fk": { + "name": "site_settings_locales_parent_id_fk", + "tableFrom": "site_settings_locales", + "tableTo": "site_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu_submenu": { + "name": "navigation_main_menu_submenu", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "link_type": { + "name": "link_type", + "type": "enum_navigation_main_menu_submenu_link_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'page'" + }, + "page_id": { + "name": "page_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "navigation_main_menu_submenu_order_idx": { + "name": "navigation_main_menu_submenu_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_submenu_parent_id_idx": { + "name": "navigation_main_menu_submenu_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_submenu_page_idx": { + "name": "navigation_main_menu_submenu_page_idx", + "columns": [ + { + "expression": "page_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_submenu_page_id_pages_id_fk": { + "name": "navigation_main_menu_submenu_page_id_pages_id_fk", + "tableFrom": "navigation_main_menu_submenu", + "tableTo": "pages", + "columnsFrom": [ + "page_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "navigation_main_menu_submenu_parent_id_fk": { + "name": "navigation_main_menu_submenu_parent_id_fk", + "tableFrom": "navigation_main_menu_submenu", + "tableTo": "navigation_main_menu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu_submenu_locales": { + "name": "navigation_main_menu_submenu_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "navigation_main_menu_submenu_locales_locale_parent_id_unique": { + "name": "navigation_main_menu_submenu_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_submenu_locales_parent_id_fk": { + "name": "navigation_main_menu_submenu_locales_parent_id_fk", + "tableFrom": "navigation_main_menu_submenu_locales", + "tableTo": "navigation_main_menu_submenu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu": { + "name": "navigation_main_menu", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "type": { + "name": "type", + "type": "enum_navigation_main_menu_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'page'" + }, + "page_id": { + "name": "page_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "open_in_new_tab": { + "name": "open_in_new_tab", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "navigation_main_menu_order_idx": { + "name": "navigation_main_menu_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_parent_id_idx": { + "name": "navigation_main_menu_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_page_idx": { + "name": "navigation_main_menu_page_idx", + "columns": [ + { + "expression": "page_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_page_id_pages_id_fk": { + "name": "navigation_main_menu_page_id_pages_id_fk", + "tableFrom": "navigation_main_menu", + "tableTo": "pages", + "columnsFrom": [ + "page_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "navigation_main_menu_parent_id_fk": { + "name": "navigation_main_menu_parent_id_fk", + "tableFrom": "navigation_main_menu", + "tableTo": "navigation", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu_locales": { + "name": "navigation_main_menu_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "navigation_main_menu_locales_locale_parent_id_unique": { + "name": "navigation_main_menu_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_locales_parent_id_fk": { + "name": "navigation_main_menu_locales_parent_id_fk", + "tableFrom": "navigation_main_menu_locales", + "tableTo": "navigation_main_menu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_footer_menu": { + "name": "navigation_footer_menu", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "link_type": { + "name": "link_type", + "type": "enum_navigation_footer_menu_link_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'page'" + }, + "page_id": { + "name": "page_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "navigation_footer_menu_order_idx": { + "name": "navigation_footer_menu_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_footer_menu_parent_id_idx": { + "name": "navigation_footer_menu_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_footer_menu_page_idx": { + "name": "navigation_footer_menu_page_idx", + "columns": [ + { + "expression": "page_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_footer_menu_page_id_pages_id_fk": { + "name": "navigation_footer_menu_page_id_pages_id_fk", + "tableFrom": "navigation_footer_menu", + "tableTo": "pages", + "columnsFrom": [ + "page_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "navigation_footer_menu_parent_id_fk": { + "name": "navigation_footer_menu_parent_id_fk", + "tableFrom": "navigation_footer_menu", + "tableTo": "navigation", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_footer_menu_locales": { + "name": "navigation_footer_menu_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "navigation_footer_menu_locales_locale_parent_id_unique": { + "name": "navigation_footer_menu_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_footer_menu_locales_parent_id_fk": { + "name": "navigation_footer_menu_locales_parent_id_fk", + "tableFrom": "navigation_footer_menu_locales", + "tableTo": "navigation_footer_menu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation": { + "name": "navigation", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_social_profiles": { + "name": "seo_settings_social_profiles", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "enum_seo_settings_social_profiles_platform", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "seo_settings_social_profiles_order_idx": { + "name": "seo_settings_social_profiles_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "seo_settings_social_profiles_parent_id_idx": { + "name": "seo_settings_social_profiles_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_social_profiles_parent_id_fk": { + "name": "seo_settings_social_profiles_parent_id_fk", + "tableFrom": "seo_settings_social_profiles", + "tableTo": "seo_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_local_business_opening_hours": { + "name": "seo_settings_local_business_opening_hours", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "specification": { + "name": "specification", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "seo_settings_local_business_opening_hours_order_idx": { + "name": "seo_settings_local_business_opening_hours_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "seo_settings_local_business_opening_hours_parent_id_idx": { + "name": "seo_settings_local_business_opening_hours_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_local_business_opening_hours_parent_id_fk": { + "name": "seo_settings_local_business_opening_hours_parent_id_fk", + "tableFrom": "seo_settings_local_business_opening_hours", + "tableTo": "seo_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings": { + "name": "seo_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "meta_defaults_default_og_image_id": { + "name": "meta_defaults_default_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "organization_name": { + "name": "organization_name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "organization_legal_name": { + "name": "organization_legal_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "organization_logo_id": { + "name": "organization_logo_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "organization_founding_date": { + "name": "organization_founding_date", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_fax": { + "name": "contact_fax", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_street": { + "name": "address_street", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_postal_code": { + "name": "address_postal_code", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_city": { + "name": "address_city", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_region": { + "name": "address_region", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_country": { + "name": "address_country", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Deutschland'" + }, + "address_country_code": { + "name": "address_country_code", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'DE'" + }, + "geo_latitude": { + "name": "geo_latitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "geo_longitude": { + "name": "geo_longitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "local_business_enabled": { + "name": "local_business_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "local_business_type": { + "name": "local_business_type", + "type": "enum_seo_settings_local_business_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "local_business_price_range": { + "name": "local_business_price_range", + "type": "enum_seo_settings_local_business_price_range", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "robots_allow_indexing": { + "name": "robots_allow_indexing", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "verification_google": { + "name": "verification_google", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "verification_bing": { + "name": "verification_bing", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "verification_yandex": { + "name": "verification_yandex", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "seo_settings_meta_defaults_meta_defaults_default_og_imag_idx": { + "name": "seo_settings_meta_defaults_meta_defaults_default_og_imag_idx", + "columns": [ + { + "expression": "meta_defaults_default_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "seo_settings_organization_organization_logo_idx": { + "name": "seo_settings_organization_organization_logo_idx", + "columns": [ + { + "expression": "organization_logo_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_meta_defaults_default_og_image_id_media_id_fk": { + "name": "seo_settings_meta_defaults_default_og_image_id_media_id_fk", + "tableFrom": "seo_settings", + "tableTo": "media", + "columnsFrom": [ + "meta_defaults_default_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "seo_settings_organization_logo_id_media_id_fk": { + "name": "seo_settings_organization_logo_id_media_id_fk", + "tableFrom": "seo_settings", + "tableTo": "media", + "columnsFrom": [ + "organization_logo_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_locales": { + "name": "seo_settings_locales", + "schema": "", + "columns": { + "meta_defaults_title_suffix": { + "name": "meta_defaults_title_suffix", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'| Website'" + }, + "meta_defaults_default_description": { + "name": "meta_defaults_default_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "organization_description": { + "name": "organization_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "seo_settings_locales_locale_parent_id_unique": { + "name": "seo_settings_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_locales_parent_id_fk": { + "name": "seo_settings_locales_parent_id_fk", + "tableFrom": "seo_settings_locales", + "tableTo": "seo_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_texts": { + "name": "seo_settings_texts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "seo_settings_texts_order_parent": { + "name": "seo_settings_texts_order_parent", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_texts_parent_fk": { + "name": "seo_settings_texts_parent_fk", + "tableFrom": "seo_settings_texts", + "tableTo": "seo_settings", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public._locales": { + "name": "_locales", + "schema": "public", + "values": [ + "de", + "en" + ] + }, + "public.enum_pages_blocks_hero_block_alignment": { + "name": "enum_pages_blocks_hero_block_alignment", + "schema": "public", + "values": [ + "left", + "center", + "right" + ] + }, + "public.enum_pages_blocks_hero_block_cta_style": { + "name": "enum_pages_blocks_hero_block_cta_style", + "schema": "public", + "values": [ + "primary", + "secondary", + "outline" + ] + }, + "public.enum_pages_blocks_text_block_width": { + "name": "enum_pages_blocks_text_block_width", + "schema": "public", + "values": [ + "narrow", + "medium", + "full" + ] + }, + "public.enum_pages_blocks_image_text_block_image_position": { + "name": "enum_pages_blocks_image_text_block_image_position", + "schema": "public", + "values": [ + "left", + "right" + ] + }, + "public.enum_pages_blocks_card_grid_block_columns": { + "name": "enum_pages_blocks_card_grid_block_columns", + "schema": "public", + "values": [ + "2", + "3", + "4" + ] + }, + "public.enum_pages_blocks_quote_block_style": { + "name": "enum_pages_blocks_quote_block_style", + "schema": "public", + "values": [ + "simple", + "highlighted", + "with-image" + ] + }, + "public.enum_pages_blocks_cta_block_buttons_style": { + "name": "enum_pages_blocks_cta_block_buttons_style", + "schema": "public", + "values": [ + "primary", + "secondary", + "outline" + ] + }, + "public.enum_pages_blocks_cta_block_background_color": { + "name": "enum_pages_blocks_cta_block_background_color", + "schema": "public", + "values": [ + "dark", + "light", + "accent" + ] + }, + "public.enum_pages_blocks_timeline_block_layout": { + "name": "enum_pages_blocks_timeline_block_layout", + "schema": "public", + "values": [ + "vertical", + "alternating", + "horizontal" + ] + }, + "public.enum_pages_blocks_timeline_block_marker_style": { + "name": "enum_pages_blocks_timeline_block_marker_style", + "schema": "public", + "values": [ + "dot", + "number", + "icon", + "date" + ] + }, + "public.enum_pages_blocks_timeline_block_background_color": { + "name": "enum_pages_blocks_timeline_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark" + ] + }, + "public.enum_pages_blocks_divider_block_style": { + "name": "enum_pages_blocks_divider_block_style", + "schema": "public", + "values": [ + "line", + "space", + "dots" + ] + }, + "public.enum_pages_blocks_divider_block_spacing": { + "name": "enum_pages_blocks_divider_block_spacing", + "schema": "public", + "values": [ + "small", + "medium", + "large" + ] + }, + "public.enum_pages_blocks_video_block_aspect_ratio": { + "name": "enum_pages_blocks_video_block_aspect_ratio", + "schema": "public", + "values": [ + "16:9", + "4:3", + "1:1" + ] + }, + "public.enum_pages_blocks_posts_list_block_post_type": { + "name": "enum_pages_blocks_posts_list_block_post_type", + "schema": "public", + "values": [ + "blog", + "news", + "press", + "announcement", + "all" + ] + }, + "public.enum_pages_blocks_posts_list_block_layout": { + "name": "enum_pages_blocks_posts_list_block_layout", + "schema": "public", + "values": [ + "grid", + "list", + "featured", + "compact", + "masonry" + ] + }, + "public.enum_pages_blocks_posts_list_block_columns": { + "name": "enum_pages_blocks_posts_list_block_columns", + "schema": "public", + "values": [ + "2", + "3", + "4" + ] + }, + "public.enum_pages_blocks_posts_list_block_background_color": { + "name": "enum_pages_blocks_posts_list_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark" + ] + }, + "public.enum_pages_blocks_testimonials_block_layout": { + "name": "enum_pages_blocks_testimonials_block_layout", + "schema": "public", + "values": [ + "slider", + "grid", + "single", + "masonry", + "list" + ] + }, + "public.enum_pages_blocks_testimonials_block_columns": { + "name": "enum_pages_blocks_testimonials_block_columns", + "schema": "public", + "values": [ + "2", + "3", + "4" + ] + }, + "public.enum_pages_blocks_testimonials_block_display_mode": { + "name": "enum_pages_blocks_testimonials_block_display_mode", + "schema": "public", + "values": [ + "all", + "selected" + ] + }, + "public.enum_pages_blocks_testimonials_block_background_color": { + "name": "enum_pages_blocks_testimonials_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark", + "accent" + ] + }, + "public.enum_pages_blocks_newsletter_block_available_interests": { + "name": "enum_pages_blocks_newsletter_block_available_interests", + "schema": "public", + "values": [ + "general", + "blog", + "products", + "offers", + "events" + ] + }, + "public.enum_pages_blocks_newsletter_block_layout": { + "name": "enum_pages_blocks_newsletter_block_layout", + "schema": "public", + "values": [ + "inline", + "stacked", + "with-image", + "minimal", + "card" + ] + }, + "public.enum_pages_blocks_newsletter_block_image_position": { + "name": "enum_pages_blocks_newsletter_block_image_position", + "schema": "public", + "values": [ + "left", + "right" + ] + }, + "public.enum_pages_blocks_newsletter_block_background_color": { + "name": "enum_pages_blocks_newsletter_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark", + "accent" + ] + }, + "public.enum_pages_blocks_process_steps_block_layout": { + "name": "enum_pages_blocks_process_steps_block_layout", + "schema": "public", + "values": [ + "horizontal", + "vertical", + "alternating", + "connected", + "timeline" + ] + }, + "public.enum_pages_blocks_process_steps_block_cta_variant": { + "name": "enum_pages_blocks_process_steps_block_cta_variant", + "schema": "public", + "values": [ + "default", + "ghost", + "light" + ] + }, + "public.enum_pages_blocks_process_steps_block_background_color": { + "name": "enum_pages_blocks_process_steps_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark" + ] + }, + "public.enum_pages_status": { + "name": "enum_pages_status", + "schema": "public", + "values": [ + "draft", + "published" + ] + }, + "public.enum_posts_type": { + "name": "enum_posts_type", + "schema": "public", + "values": [ + "blog", + "news", + "press", + "announcement" + ] + }, + "public.enum_posts_status": { + "name": "enum_posts_status", + "schema": "public", + "values": [ + "draft", + "published", + "archived" + ] + }, + "public.enum_social_links_platform": { + "name": "enum_social_links_platform", + "schema": "public", + "values": [ + "facebook", + "x", + "instagram", + "youtube", + "linkedin", + "xing" + ] + }, + "public.enum_newsletter_subscribers_interests": { + "name": "enum_newsletter_subscribers_interests", + "schema": "public", + "values": [ + "general", + "blog", + "products", + "offers", + "events" + ] + }, + "public.enum_newsletter_subscribers_status": { + "name": "enum_newsletter_subscribers_status", + "schema": "public", + "values": [ + "pending", + "confirmed", + "unsubscribed", + "bounced" + ] + }, + "public.enum_portfolios_status": { + "name": "enum_portfolios_status", + "schema": "public", + "values": [ + "draft", + "published", + "archived" + ] + }, + "public.enum_cookie_configurations_enabled_categories": { + "name": "enum_cookie_configurations_enabled_categories", + "schema": "public", + "values": [ + "necessary", + "functional", + "analytics", + "marketing" + ] + }, + "public.enum_cookie_configurations_styling_position": { + "name": "enum_cookie_configurations_styling_position", + "schema": "public", + "values": [ + "bottom", + "top", + "middle" + ] + }, + "public.enum_cookie_configurations_styling_theme": { + "name": "enum_cookie_configurations_styling_theme", + "schema": "public", + "values": [ + "dark", + "light", + "auto" + ] + }, + "public.enum_cookie_inventory_category": { + "name": "enum_cookie_inventory_category", + "schema": "public", + "values": [ + "necessary", + "functional", + "analytics", + "marketing" + ] + }, + "public.enum_privacy_policy_settings_provider": { + "name": "enum_privacy_policy_settings_provider", + "schema": "public", + "values": [ + "alfright", + "internal" + ] + }, + "public.enum_privacy_policy_settings_alfright_language": { + "name": "enum_privacy_policy_settings_alfright_language", + "schema": "public", + "values": [ + "de-de", + "de-at", + "de-ch", + "en-gb", + "en-us" + ] + }, + "public.enum_forms_confirmation_type": { + "name": "enum_forms_confirmation_type", + "schema": "public", + "values": [ + "message", + "redirect" + ] + }, + "public.enum_forms_redirect_type": { + "name": "enum_forms_redirect_type", + "schema": "public", + "values": [ + "reference", + "custom" + ] + }, + "public.enum_redirects_to_type": { + "name": "enum_redirects_to_type", + "schema": "public", + "values": [ + "reference", + "custom" + ] + }, + "public.enum_navigation_main_menu_submenu_link_type": { + "name": "enum_navigation_main_menu_submenu_link_type", + "schema": "public", + "values": [ + "page", + "custom" + ] + }, + "public.enum_navigation_main_menu_type": { + "name": "enum_navigation_main_menu_type", + "schema": "public", + "values": [ + "page", + "custom", + "submenu" + ] + }, + "public.enum_navigation_footer_menu_link_type": { + "name": "enum_navigation_footer_menu_link_type", + "schema": "public", + "values": [ + "page", + "custom" + ] + }, + "public.enum_seo_settings_social_profiles_platform": { + "name": "enum_seo_settings_social_profiles_platform", + "schema": "public", + "values": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "tiktok", + "pinterest", + "xing", + "other" + ] + }, + "public.enum_seo_settings_local_business_type": { + "name": "enum_seo_settings_local_business_type", + "schema": "public", + "values": [ + "LocalBusiness", + "Physician", + "Dentist", + "Attorney", + "Restaurant", + "Hotel", + "Store", + "HealthClub", + "HairSalon", + "AutoRepair", + "RealEstateAgent", + "FinancialService", + "ProfessionalService", + "MedicalBusiness" + ] + }, + "public.enum_seo_settings_local_business_price_range": { + "name": "enum_seo_settings_local_business_price_range", + "schema": "public", + "values": [ + "€", + "€€", + "€€€", + "€€€€" + ] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "id": "7716eee4-6850-45fd-86d5-89994c7c646b", + "prevId": "00000000-0000-0000-0000-000000000000" +} \ No newline at end of file diff --git a/src/migrations/20251206_134750_tenant_email_config.ts b/src/migrations/20251206_134750_tenant_email_config.ts new file mode 100644 index 0000000..e7a46ed --- /dev/null +++ b/src/migrations/20251206_134750_tenant_email_config.ts @@ -0,0 +1,27 @@ +import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres' + +export async function up({ db, payload, req }: MigrateUpArgs): Promise { + await db.execute(sql` + ALTER TABLE "tenants" ADD COLUMN "email_from_address" varchar; + ALTER TABLE "tenants" ADD COLUMN "email_from_name" varchar; + ALTER TABLE "tenants" ADD COLUMN "email_reply_to" varchar; + ALTER TABLE "tenants" ADD COLUMN "email_use_custom_smtp" boolean DEFAULT false; + ALTER TABLE "tenants" ADD COLUMN "email_smtp_host" varchar; + ALTER TABLE "tenants" ADD COLUMN "email_smtp_port" numeric DEFAULT 587; + ALTER TABLE "tenants" ADD COLUMN "email_smtp_secure" boolean DEFAULT false; + ALTER TABLE "tenants" ADD COLUMN "email_smtp_user" varchar; + ALTER TABLE "tenants" ADD COLUMN "email_smtp_pass" varchar;`) +} + +export async function down({ db, payload, req }: MigrateDownArgs): Promise { + await db.execute(sql` + ALTER TABLE "tenants" DROP COLUMN "email_from_address"; + ALTER TABLE "tenants" DROP COLUMN "email_from_name"; + ALTER TABLE "tenants" DROP COLUMN "email_reply_to"; + ALTER TABLE "tenants" DROP COLUMN "email_use_custom_smtp"; + ALTER TABLE "tenants" DROP COLUMN "email_smtp_host"; + ALTER TABLE "tenants" DROP COLUMN "email_smtp_port"; + ALTER TABLE "tenants" DROP COLUMN "email_smtp_secure"; + ALTER TABLE "tenants" DROP COLUMN "email_smtp_user"; + ALTER TABLE "tenants" DROP COLUMN "email_smtp_pass";`) +} diff --git a/src/migrations/20251206_141403_email_logs_collection.json b/src/migrations/20251206_141403_email_logs_collection.json new file mode 100644 index 0000000..3039dc5 --- /dev/null +++ b/src/migrations/20251206_141403_email_logs_collection.json @@ -0,0 +1,14486 @@ +{ + "version": "7", + "dialect": "postgresql", + "tables": { + "public.users_tenants": { + "name": "users_tenants", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "users_tenants_order_idx": { + "name": "users_tenants_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_tenants_parent_id_idx": { + "name": "users_tenants_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_tenants_tenant_idx": { + "name": "users_tenants_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "users_tenants_tenant_id_tenants_id_fk": { + "name": "users_tenants_tenant_id_tenants_id_fk", + "tableFrom": "users_tenants", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "users_tenants_parent_id_fk": { + "name": "users_tenants_parent_id_fk", + "tableFrom": "users_tenants", + "tableTo": "users", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users_sessions": { + "name": "users_sessions", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "users_sessions_order_idx": { + "name": "users_sessions_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_sessions_parent_id_idx": { + "name": "users_sessions_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "users_sessions_parent_id_fk": { + "name": "users_sessions_parent_id_fk", + "tableFrom": "users_sessions", + "tableTo": "users", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "is_super_admin": { + "name": "is_super_admin", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "reset_password_token": { + "name": "reset_password_token", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "reset_password_expiration": { + "name": "reset_password_expiration", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "salt": { + "name": "salt", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "hash": { + "name": "hash", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "login_attempts": { + "name": "login_attempts", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "lock_until": { + "name": "lock_until", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "users_updated_at_idx": { + "name": "users_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_created_at_idx": { + "name": "users_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_email_idx": { + "name": "users_email_idx", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.media": { + "name": "media", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "alt": { + "name": "alt", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "caption": { + "name": "caption", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "credit": { + "name": "credit", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "thumbnail_u_r_l": { + "name": "thumbnail_u_r_l", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "filename": { + "name": "filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "filesize": { + "name": "filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "height": { + "name": "height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "focal_x": { + "name": "focal_x", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "focal_y": { + "name": "focal_y", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_url": { + "name": "sizes_thumbnail_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_width": { + "name": "sizes_thumbnail_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_height": { + "name": "sizes_thumbnail_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_mime_type": { + "name": "sizes_thumbnail_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_filesize": { + "name": "sizes_thumbnail_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_thumbnail_filename": { + "name": "sizes_thumbnail_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_small_url": { + "name": "sizes_small_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_small_width": { + "name": "sizes_small_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_small_height": { + "name": "sizes_small_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_small_mime_type": { + "name": "sizes_small_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_small_filesize": { + "name": "sizes_small_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_small_filename": { + "name": "sizes_small_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_url": { + "name": "sizes_medium_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_width": { + "name": "sizes_medium_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_height": { + "name": "sizes_medium_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_mime_type": { + "name": "sizes_medium_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_filesize": { + "name": "sizes_medium_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_filename": { + "name": "sizes_medium_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_url": { + "name": "sizes_large_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_width": { + "name": "sizes_large_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_height": { + "name": "sizes_large_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_mime_type": { + "name": "sizes_large_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_filesize": { + "name": "sizes_large_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_filename": { + "name": "sizes_large_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_url": { + "name": "sizes_xlarge_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_width": { + "name": "sizes_xlarge_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_height": { + "name": "sizes_xlarge_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_mime_type": { + "name": "sizes_xlarge_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_filesize": { + "name": "sizes_xlarge_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_filename": { + "name": "sizes_xlarge_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_url": { + "name": "sizes_2k_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_width": { + "name": "sizes_2k_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_height": { + "name": "sizes_2k_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_mime_type": { + "name": "sizes_2k_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_filesize": { + "name": "sizes_2k_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_2k_filename": { + "name": "sizes_2k_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_og_url": { + "name": "sizes_og_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_og_width": { + "name": "sizes_og_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_og_height": { + "name": "sizes_og_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_og_mime_type": { + "name": "sizes_og_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_og_filesize": { + "name": "sizes_og_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_og_filename": { + "name": "sizes_og_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_url": { + "name": "sizes_medium_avif_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_width": { + "name": "sizes_medium_avif_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_height": { + "name": "sizes_medium_avif_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_mime_type": { + "name": "sizes_medium_avif_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_filesize": { + "name": "sizes_medium_avif_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_medium_avif_filename": { + "name": "sizes_medium_avif_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_url": { + "name": "sizes_large_avif_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_width": { + "name": "sizes_large_avif_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_height": { + "name": "sizes_large_avif_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_mime_type": { + "name": "sizes_large_avif_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_filesize": { + "name": "sizes_large_avif_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_large_avif_filename": { + "name": "sizes_large_avif_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_url": { + "name": "sizes_xlarge_avif_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_width": { + "name": "sizes_xlarge_avif_width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_height": { + "name": "sizes_xlarge_avif_height", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_mime_type": { + "name": "sizes_xlarge_avif_mime_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_filesize": { + "name": "sizes_xlarge_avif_filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "sizes_xlarge_avif_filename": { + "name": "sizes_xlarge_avif_filename", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "media_tenant_idx": { + "name": "media_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_updated_at_idx": { + "name": "media_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_created_at_idx": { + "name": "media_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_filename_idx": { + "name": "media_filename_idx", + "columns": [ + { + "expression": "filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_thumbnail_sizes_thumbnail_filename_idx": { + "name": "media_sizes_thumbnail_sizes_thumbnail_filename_idx", + "columns": [ + { + "expression": "sizes_thumbnail_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_small_sizes_small_filename_idx": { + "name": "media_sizes_small_sizes_small_filename_idx", + "columns": [ + { + "expression": "sizes_small_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_medium_sizes_medium_filename_idx": { + "name": "media_sizes_medium_sizes_medium_filename_idx", + "columns": [ + { + "expression": "sizes_medium_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_large_sizes_large_filename_idx": { + "name": "media_sizes_large_sizes_large_filename_idx", + "columns": [ + { + "expression": "sizes_large_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_xlarge_sizes_xlarge_filename_idx": { + "name": "media_sizes_xlarge_sizes_xlarge_filename_idx", + "columns": [ + { + "expression": "sizes_xlarge_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_2k_sizes_2k_filename_idx": { + "name": "media_sizes_2k_sizes_2k_filename_idx", + "columns": [ + { + "expression": "sizes_2k_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_og_sizes_og_filename_idx": { + "name": "media_sizes_og_sizes_og_filename_idx", + "columns": [ + { + "expression": "sizes_og_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_medium_avif_sizes_medium_avif_filename_idx": { + "name": "media_sizes_medium_avif_sizes_medium_avif_filename_idx", + "columns": [ + { + "expression": "sizes_medium_avif_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_large_avif_sizes_large_avif_filename_idx": { + "name": "media_sizes_large_avif_sizes_large_avif_filename_idx", + "columns": [ + { + "expression": "sizes_large_avif_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "media_sizes_xlarge_avif_sizes_xlarge_avif_filename_idx": { + "name": "media_sizes_xlarge_avif_sizes_xlarge_avif_filename_idx", + "columns": [ + { + "expression": "sizes_xlarge_avif_filename", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "media_tenant_id_tenants_id_fk": { + "name": "media_tenant_id_tenants_id_fk", + "tableFrom": "media", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.media_texts": { + "name": "media_texts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "media_texts_order_parent": { + "name": "media_texts_order_parent", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "media_texts_parent_fk": { + "name": "media_texts_parent_fk", + "tableFrom": "media_texts", + "tableTo": "media", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tenants_domains": { + "name": "tenants_domains", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "domain": { + "name": "domain", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tenants_domains_order_idx": { + "name": "tenants_domains_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "tenants_domains_parent_id_idx": { + "name": "tenants_domains_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "tenants_domains_parent_id_fk": { + "name": "tenants_domains_parent_id_fk", + "tableFrom": "tenants_domains", + "tableTo": "tenants", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tenants": { + "name": "tenants", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "email_from_address": { + "name": "email_from_address", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_from_name": { + "name": "email_from_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_reply_to": { + "name": "email_reply_to", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_use_custom_smtp": { + "name": "email_use_custom_smtp", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "email_smtp_host": { + "name": "email_smtp_host", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_smtp_port": { + "name": "email_smtp_port", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 587 + }, + "email_smtp_secure": { + "name": "email_smtp_secure", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "email_smtp_user": { + "name": "email_smtp_user", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_smtp_pass": { + "name": "email_smtp_pass", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "tenants_slug_idx": { + "name": "tenants_slug_idx", + "columns": [ + { + "expression": "slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "tenants_updated_at_idx": { + "name": "tenants_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "tenants_created_at_idx": { + "name": "tenants_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_hero_block": { + "name": "pages_blocks_hero_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "background_image_id": { + "name": "background_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "alignment": { + "name": "alignment", + "type": "enum_pages_blocks_hero_block_alignment", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'center'" + }, + "overlay": { + "name": "overlay", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "cta_link": { + "name": "cta_link", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_style": { + "name": "cta_style", + "type": "enum_pages_blocks_hero_block_cta_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'primary'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_hero_block_order_idx": { + "name": "pages_blocks_hero_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_hero_block_parent_id_idx": { + "name": "pages_blocks_hero_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_hero_block_path_idx": { + "name": "pages_blocks_hero_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_hero_block_background_image_idx": { + "name": "pages_blocks_hero_block_background_image_idx", + "columns": [ + { + "expression": "background_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_hero_block_background_image_id_media_id_fk": { + "name": "pages_blocks_hero_block_background_image_id_media_id_fk", + "tableFrom": "pages_blocks_hero_block", + "tableTo": "media", + "columnsFrom": [ + "background_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_hero_block_parent_id_fk": { + "name": "pages_blocks_hero_block_parent_id_fk", + "tableFrom": "pages_blocks_hero_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_hero_block_locales": { + "name": "pages_blocks_hero_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "subline": { + "name": "subline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_text": { + "name": "cta_text", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_hero_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_hero_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_hero_block_locales_parent_id_fk": { + "name": "pages_blocks_hero_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_hero_block_locales", + "tableTo": "pages_blocks_hero_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_text_block": { + "name": "pages_blocks_text_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "width": { + "name": "width", + "type": "enum_pages_blocks_text_block_width", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'medium'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_text_block_order_idx": { + "name": "pages_blocks_text_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_text_block_parent_id_idx": { + "name": "pages_blocks_text_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_text_block_path_idx": { + "name": "pages_blocks_text_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_text_block_parent_id_fk": { + "name": "pages_blocks_text_block_parent_id_fk", + "tableFrom": "pages_blocks_text_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_text_block_locales": { + "name": "pages_blocks_text_block_locales", + "schema": "", + "columns": { + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_text_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_text_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_text_block_locales_parent_id_fk": { + "name": "pages_blocks_text_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_text_block_locales", + "tableTo": "pages_blocks_text_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_image_text_block": { + "name": "pages_blocks_image_text_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "image_position": { + "name": "image_position", + "type": "enum_pages_blocks_image_text_block_image_position", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'left'" + }, + "cta_link": { + "name": "cta_link", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_image_text_block_order_idx": { + "name": "pages_blocks_image_text_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_image_text_block_parent_id_idx": { + "name": "pages_blocks_image_text_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_image_text_block_path_idx": { + "name": "pages_blocks_image_text_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_image_text_block_image_idx": { + "name": "pages_blocks_image_text_block_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_image_text_block_image_id_media_id_fk": { + "name": "pages_blocks_image_text_block_image_id_media_id_fk", + "tableFrom": "pages_blocks_image_text_block", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_image_text_block_parent_id_fk": { + "name": "pages_blocks_image_text_block_parent_id_fk", + "tableFrom": "pages_blocks_image_text_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_image_text_block_locales": { + "name": "pages_blocks_image_text_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "cta_text": { + "name": "cta_text", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_image_text_block_locales_locale_parent_id_uniqu": { + "name": "pages_blocks_image_text_block_locales_locale_parent_id_uniqu", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_image_text_block_locales_parent_id_fk": { + "name": "pages_blocks_image_text_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_image_text_block_locales", + "tableTo": "pages_blocks_image_text_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block_cards": { + "name": "pages_blocks_card_grid_block_cards", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "link": { + "name": "link", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_card_grid_block_cards_order_idx": { + "name": "pages_blocks_card_grid_block_cards_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_cards_parent_id_idx": { + "name": "pages_blocks_card_grid_block_cards_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_cards_image_idx": { + "name": "pages_blocks_card_grid_block_cards_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_cards_image_id_media_id_fk": { + "name": "pages_blocks_card_grid_block_cards_image_id_media_id_fk", + "tableFrom": "pages_blocks_card_grid_block_cards", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_card_grid_block_cards_parent_id_fk": { + "name": "pages_blocks_card_grid_block_cards_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block_cards", + "tableTo": "pages_blocks_card_grid_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block_cards_locales": { + "name": "pages_blocks_card_grid_block_cards_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "link_text": { + "name": "link_text", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'mehr'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_card_grid_block_cards_locales_locale_parent_id_": { + "name": "pages_blocks_card_grid_block_cards_locales_locale_parent_id_", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_cards_locales_parent_id_fk": { + "name": "pages_blocks_card_grid_block_cards_locales_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block_cards_locales", + "tableTo": "pages_blocks_card_grid_block_cards", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block": { + "name": "pages_blocks_card_grid_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "columns": { + "name": "columns", + "type": "enum_pages_blocks_card_grid_block_columns", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'3'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_card_grid_block_order_idx": { + "name": "pages_blocks_card_grid_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_parent_id_idx": { + "name": "pages_blocks_card_grid_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_card_grid_block_path_idx": { + "name": "pages_blocks_card_grid_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_parent_id_fk": { + "name": "pages_blocks_card_grid_block_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_card_grid_block_locales": { + "name": "pages_blocks_card_grid_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_card_grid_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_card_grid_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_card_grid_block_locales_parent_id_fk": { + "name": "pages_blocks_card_grid_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_card_grid_block_locales", + "tableTo": "pages_blocks_card_grid_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_quote_block": { + "name": "pages_blocks_quote_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "author": { + "name": "author", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "style": { + "name": "style", + "type": "enum_pages_blocks_quote_block_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'simple'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_quote_block_order_idx": { + "name": "pages_blocks_quote_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_quote_block_parent_id_idx": { + "name": "pages_blocks_quote_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_quote_block_path_idx": { + "name": "pages_blocks_quote_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_quote_block_image_idx": { + "name": "pages_blocks_quote_block_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_quote_block_image_id_media_id_fk": { + "name": "pages_blocks_quote_block_image_id_media_id_fk", + "tableFrom": "pages_blocks_quote_block", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_quote_block_parent_id_fk": { + "name": "pages_blocks_quote_block_parent_id_fk", + "tableFrom": "pages_blocks_quote_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_quote_block_locales": { + "name": "pages_blocks_quote_block_locales", + "schema": "", + "columns": { + "quote": { + "name": "quote", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_quote_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_quote_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_quote_block_locales_parent_id_fk": { + "name": "pages_blocks_quote_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_quote_block_locales", + "tableTo": "pages_blocks_quote_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block_buttons": { + "name": "pages_blocks_cta_block_buttons", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "link": { + "name": "link", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "style": { + "name": "style", + "type": "enum_pages_blocks_cta_block_buttons_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'primary'" + } + }, + "indexes": { + "pages_blocks_cta_block_buttons_order_idx": { + "name": "pages_blocks_cta_block_buttons_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_cta_block_buttons_parent_id_idx": { + "name": "pages_blocks_cta_block_buttons_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_buttons_parent_id_fk": { + "name": "pages_blocks_cta_block_buttons_parent_id_fk", + "tableFrom": "pages_blocks_cta_block_buttons", + "tableTo": "pages_blocks_cta_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block_buttons_locales": { + "name": "pages_blocks_cta_block_buttons_locales", + "schema": "", + "columns": { + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_cta_block_buttons_locales_locale_parent_id_uniq": { + "name": "pages_blocks_cta_block_buttons_locales_locale_parent_id_uniq", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_buttons_locales_parent_id_fk": { + "name": "pages_blocks_cta_block_buttons_locales_parent_id_fk", + "tableFrom": "pages_blocks_cta_block_buttons_locales", + "tableTo": "pages_blocks_cta_block_buttons", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block": { + "name": "pages_blocks_cta_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_cta_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'dark'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_cta_block_order_idx": { + "name": "pages_blocks_cta_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_cta_block_parent_id_idx": { + "name": "pages_blocks_cta_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_cta_block_path_idx": { + "name": "pages_blocks_cta_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_parent_id_fk": { + "name": "pages_blocks_cta_block_parent_id_fk", + "tableFrom": "pages_blocks_cta_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_cta_block_locales": { + "name": "pages_blocks_cta_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_cta_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_cta_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_cta_block_locales_parent_id_fk": { + "name": "pages_blocks_cta_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_cta_block_locales", + "tableTo": "pages_blocks_cta_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_contact_form_block": { + "name": "pages_blocks_contact_form_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "recipient_email": { + "name": "recipient_email", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'info@porwoll.de'" + }, + "show_phone": { + "name": "show_phone", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_address": { + "name": "show_address", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_socials": { + "name": "show_socials", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_contact_form_block_order_idx": { + "name": "pages_blocks_contact_form_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_contact_form_block_parent_id_idx": { + "name": "pages_blocks_contact_form_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_contact_form_block_path_idx": { + "name": "pages_blocks_contact_form_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_contact_form_block_parent_id_fk": { + "name": "pages_blocks_contact_form_block_parent_id_fk", + "tableFrom": "pages_blocks_contact_form_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_contact_form_block_locales": { + "name": "pages_blocks_contact_form_block_locales", + "schema": "", + "columns": { + "headline": { + "name": "headline", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Kontakt'" + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_contact_form_block_locales_locale_parent_id_uni": { + "name": "pages_blocks_contact_form_block_locales_locale_parent_id_uni", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_contact_form_block_locales_parent_id_fk": { + "name": "pages_blocks_contact_form_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_contact_form_block_locales", + "tableTo": "pages_blocks_contact_form_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block_items": { + "name": "pages_blocks_timeline_block_items", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "year": { + "name": "year", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "icon": { + "name": "icon", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "link_href": { + "name": "link_href", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_timeline_block_items_order_idx": { + "name": "pages_blocks_timeline_block_items_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_items_parent_id_idx": { + "name": "pages_blocks_timeline_block_items_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_items_image_idx": { + "name": "pages_blocks_timeline_block_items_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_items_image_id_media_id_fk": { + "name": "pages_blocks_timeline_block_items_image_id_media_id_fk", + "tableFrom": "pages_blocks_timeline_block_items", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_timeline_block_items_parent_id_fk": { + "name": "pages_blocks_timeline_block_items_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block_items", + "tableTo": "pages_blocks_timeline_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block_items_locales": { + "name": "pages_blocks_timeline_block_items_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "link_label": { + "name": "link_label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_timeline_block_items_locales_locale_parent_id_u": { + "name": "pages_blocks_timeline_block_items_locales_locale_parent_id_u", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_items_locales_parent_id_fk": { + "name": "pages_blocks_timeline_block_items_locales_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block_items_locales", + "tableTo": "pages_blocks_timeline_block_items", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block": { + "name": "pages_blocks_timeline_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_timeline_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'vertical'" + }, + "show_connector": { + "name": "show_connector", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "marker_style": { + "name": "marker_style", + "type": "enum_pages_blocks_timeline_block_marker_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'dot'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_timeline_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'white'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_timeline_block_order_idx": { + "name": "pages_blocks_timeline_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_parent_id_idx": { + "name": "pages_blocks_timeline_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_timeline_block_path_idx": { + "name": "pages_blocks_timeline_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_parent_id_fk": { + "name": "pages_blocks_timeline_block_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_timeline_block_locales": { + "name": "pages_blocks_timeline_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_timeline_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_timeline_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_timeline_block_locales_parent_id_fk": { + "name": "pages_blocks_timeline_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_timeline_block_locales", + "tableTo": "pages_blocks_timeline_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_divider_block": { + "name": "pages_blocks_divider_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "style": { + "name": "style", + "type": "enum_pages_blocks_divider_block_style", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'space'" + }, + "spacing": { + "name": "spacing", + "type": "enum_pages_blocks_divider_block_spacing", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'medium'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_divider_block_order_idx": { + "name": "pages_blocks_divider_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_divider_block_parent_id_idx": { + "name": "pages_blocks_divider_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_divider_block_path_idx": { + "name": "pages_blocks_divider_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_divider_block_parent_id_fk": { + "name": "pages_blocks_divider_block_parent_id_fk", + "tableFrom": "pages_blocks_divider_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_video_block": { + "name": "pages_blocks_video_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "aspect_ratio": { + "name": "aspect_ratio", + "type": "enum_pages_blocks_video_block_aspect_ratio", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'16:9'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_video_block_order_idx": { + "name": "pages_blocks_video_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_video_block_parent_id_idx": { + "name": "pages_blocks_video_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_video_block_path_idx": { + "name": "pages_blocks_video_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_video_block_parent_id_fk": { + "name": "pages_blocks_video_block_parent_id_fk", + "tableFrom": "pages_blocks_video_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_video_block_locales": { + "name": "pages_blocks_video_block_locales", + "schema": "", + "columns": { + "caption": { + "name": "caption", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_video_block_locales_locale_parent_id_unique": { + "name": "pages_blocks_video_block_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_video_block_locales_parent_id_fk": { + "name": "pages_blocks_video_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_video_block_locales", + "tableTo": "pages_blocks_video_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_posts_list_block": { + "name": "pages_blocks_posts_list_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "post_type": { + "name": "post_type", + "type": "enum_pages_blocks_posts_list_block_post_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'blog'" + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_posts_list_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'grid'" + }, + "columns": { + "name": "columns", + "type": "enum_pages_blocks_posts_list_block_columns", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'3'" + }, + "limit": { + "name": "limit", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 6 + }, + "show_featured_only": { + "name": "show_featured_only", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_excerpt": { + "name": "show_excerpt", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_date": { + "name": "show_date", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_author": { + "name": "show_author", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_category": { + "name": "show_category", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_pagination": { + "name": "show_pagination", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_read_more": { + "name": "show_read_more", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "read_more_link": { + "name": "read_more_link", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'/blog'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_posts_list_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'white'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_posts_list_block_order_idx": { + "name": "pages_blocks_posts_list_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_posts_list_block_parent_id_idx": { + "name": "pages_blocks_posts_list_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_posts_list_block_path_idx": { + "name": "pages_blocks_posts_list_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_posts_list_block_parent_id_fk": { + "name": "pages_blocks_posts_list_block_parent_id_fk", + "tableFrom": "pages_blocks_posts_list_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_posts_list_block_locales": { + "name": "pages_blocks_posts_list_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "read_more_label": { + "name": "read_more_label", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Alle Beiträge anzeigen'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_posts_list_block_locales_locale_parent_id_uniqu": { + "name": "pages_blocks_posts_list_block_locales_locale_parent_id_uniqu", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_posts_list_block_locales_parent_id_fk": { + "name": "pages_blocks_posts_list_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_posts_list_block_locales", + "tableTo": "pages_blocks_posts_list_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_testimonials_block": { + "name": "pages_blocks_testimonials_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_testimonials_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'slider'" + }, + "columns": { + "name": "columns", + "type": "enum_pages_blocks_testimonials_block_columns", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'3'" + }, + "display_mode": { + "name": "display_mode", + "type": "enum_pages_blocks_testimonials_block_display_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'all'" + }, + "limit": { + "name": "limit", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 6 + }, + "show_rating": { + "name": "show_rating", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_image": { + "name": "show_image", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_company": { + "name": "show_company", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_source": { + "name": "show_source", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "autoplay": { + "name": "autoplay", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "autoplay_speed": { + "name": "autoplay_speed", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 5000 + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_testimonials_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'light'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_testimonials_block_order_idx": { + "name": "pages_blocks_testimonials_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_testimonials_block_parent_id_idx": { + "name": "pages_blocks_testimonials_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_testimonials_block_path_idx": { + "name": "pages_blocks_testimonials_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_testimonials_block_parent_id_fk": { + "name": "pages_blocks_testimonials_block_parent_id_fk", + "tableFrom": "pages_blocks_testimonials_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_testimonials_block_locales": { + "name": "pages_blocks_testimonials_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Das sagen unsere Kunden'" + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_testimonials_block_locales_locale_parent_id_uni": { + "name": "pages_blocks_testimonials_block_locales_locale_parent_id_uni", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_testimonials_block_locales_parent_id_fk": { + "name": "pages_blocks_testimonials_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_testimonials_block_locales", + "tableTo": "pages_blocks_testimonials_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_newsletter_block_available_interests": { + "name": "pages_blocks_newsletter_block_available_interests", + "schema": "", + "columns": { + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "enum_pages_blocks_newsletter_block_available_interests", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + } + }, + "indexes": { + "pages_blocks_newsletter_block_available_interests_order_idx": { + "name": "pages_blocks_newsletter_block_available_interests_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_available_interests_parent_idx": { + "name": "pages_blocks_newsletter_block_available_interests_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_newsletter_block_available_interests_parent_fk": { + "name": "pages_blocks_newsletter_block_available_interests_parent_fk", + "tableFrom": "pages_blocks_newsletter_block_available_interests", + "tableTo": "pages_blocks_newsletter_block", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_newsletter_block": { + "name": "pages_blocks_newsletter_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_newsletter_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'inline'" + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "image_position": { + "name": "image_position", + "type": "enum_pages_blocks_newsletter_block_image_position", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'left'" + }, + "collect_name": { + "name": "collect_name", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "show_interests": { + "name": "show_interests", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "privacy_link": { + "name": "privacy_link", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'/datenschutz'" + }, + "source": { + "name": "source", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'website'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_newsletter_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'accent'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_newsletter_block_order_idx": { + "name": "pages_blocks_newsletter_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_parent_id_idx": { + "name": "pages_blocks_newsletter_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_path_idx": { + "name": "pages_blocks_newsletter_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_newsletter_block_image_idx": { + "name": "pages_blocks_newsletter_block_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_newsletter_block_image_id_media_id_fk": { + "name": "pages_blocks_newsletter_block_image_id_media_id_fk", + "tableFrom": "pages_blocks_newsletter_block", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_newsletter_block_parent_id_fk": { + "name": "pages_blocks_newsletter_block_parent_id_fk", + "tableFrom": "pages_blocks_newsletter_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_newsletter_block_locales": { + "name": "pages_blocks_newsletter_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Newsletter abonnieren'" + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Erhalten Sie regelmäßig Updates und Neuigkeiten direkt in Ihr Postfach.'" + }, + "button_text": { + "name": "button_text", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Anmelden'" + }, + "placeholder_email": { + "name": "placeholder_email", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Ihre E-Mail-Adresse'" + }, + "success_message": { + "name": "success_message", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Vielen Dank! Bitte bestätigen Sie Ihre E-Mail-Adresse über den Link in der Bestätigungsmail.'" + }, + "error_message": { + "name": "error_message", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.'" + }, + "privacy_text": { + "name": "privacy_text", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Mit der Anmeldung akzeptieren Sie unsere Datenschutzerklärung. Sie können sich jederzeit abmelden.'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_newsletter_block_locales_locale_parent_id_uniqu": { + "name": "pages_blocks_newsletter_block_locales_locale_parent_id_uniqu", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_newsletter_block_locales_parent_id_fk": { + "name": "pages_blocks_newsletter_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_newsletter_block_locales", + "tableTo": "pages_blocks_newsletter_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block_steps": { + "name": "pages_blocks_process_steps_block_steps", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "icon": { + "name": "icon", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_process_steps_block_steps_order_idx": { + "name": "pages_blocks_process_steps_block_steps_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_steps_parent_id_idx": { + "name": "pages_blocks_process_steps_block_steps_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_steps_image_idx": { + "name": "pages_blocks_process_steps_block_steps_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_steps_image_id_media_id_fk": { + "name": "pages_blocks_process_steps_block_steps_image_id_media_id_fk", + "tableFrom": "pages_blocks_process_steps_block_steps", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_blocks_process_steps_block_steps_parent_id_fk": { + "name": "pages_blocks_process_steps_block_steps_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block_steps", + "tableTo": "pages_blocks_process_steps_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block_steps_locales": { + "name": "pages_blocks_process_steps_block_steps_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_process_steps_block_steps_locales_locale_parent": { + "name": "pages_blocks_process_steps_block_steps_locales_locale_parent", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_steps_locales_parent_id_fk": { + "name": "pages_blocks_process_steps_block_steps_locales_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block_steps_locales", + "tableTo": "pages_blocks_process_steps_block_steps", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block": { + "name": "pages_blocks_process_steps_block", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "layout": { + "name": "layout", + "type": "enum_pages_blocks_process_steps_block_layout", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'horizontal'" + }, + "show_numbers": { + "name": "show_numbers", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "show_icons": { + "name": "show_icons", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "cta_show": { + "name": "cta_show", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "cta_href": { + "name": "cta_href", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_variant": { + "name": "cta_variant", + "type": "enum_pages_blocks_process_steps_block_cta_variant", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "background_color": { + "name": "background_color", + "type": "enum_pages_blocks_process_steps_block_background_color", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'white'" + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_blocks_process_steps_block_order_idx": { + "name": "pages_blocks_process_steps_block_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_parent_id_idx": { + "name": "pages_blocks_process_steps_block_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_blocks_process_steps_block_path_idx": { + "name": "pages_blocks_process_steps_block_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_parent_id_fk": { + "name": "pages_blocks_process_steps_block_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_blocks_process_steps_block_locales": { + "name": "pages_blocks_process_steps_block_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'So funktioniert es'" + }, + "subtitle": { + "name": "subtitle", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cta_label": { + "name": "cta_label", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Jetzt starten'" + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_blocks_process_steps_block_locales_locale_parent_id_un": { + "name": "pages_blocks_process_steps_block_locales_locale_parent_id_un", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_blocks_process_steps_block_locales_parent_id_fk": { + "name": "pages_blocks_process_steps_block_locales_parent_id_fk", + "tableFrom": "pages_blocks_process_steps_block_locales", + "tableTo": "pages_blocks_process_steps_block", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages": { + "name": "pages", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "hero_image_id": { + "name": "hero_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "seo_og_image_id": { + "name": "seo_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_pages_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'draft'" + }, + "published_at": { + "name": "published_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pages_tenant_idx": { + "name": "pages_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_hero_hero_image_idx": { + "name": "pages_hero_hero_image_idx", + "columns": [ + { + "expression": "hero_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_seo_seo_og_image_idx": { + "name": "pages_seo_seo_og_image_idx", + "columns": [ + { + "expression": "seo_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_updated_at_idx": { + "name": "pages_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_created_at_idx": { + "name": "pages_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_tenant_id_tenants_id_fk": { + "name": "pages_tenant_id_tenants_id_fk", + "tableFrom": "pages", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_hero_image_id_media_id_fk": { + "name": "pages_hero_image_id_media_id_fk", + "tableFrom": "pages", + "tableTo": "media", + "columnsFrom": [ + "hero_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "pages_seo_og_image_id_media_id_fk": { + "name": "pages_seo_og_image_id_media_id_fk", + "tableFrom": "pages", + "tableTo": "media", + "columnsFrom": [ + "seo_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_locales": { + "name": "pages_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "hero_headline": { + "name": "hero_headline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "hero_subline": { + "name": "hero_subline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "pages_locales_locale_parent_id_unique": { + "name": "pages_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_locales_parent_id_fk": { + "name": "pages_locales_parent_id_fk", + "tableFrom": "pages_locales", + "tableTo": "pages", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pages_rels": { + "name": "pages_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "categories_id": { + "name": "categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "testimonials_id": { + "name": "testimonials_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "pages_rels_order_idx": { + "name": "pages_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_parent_idx": { + "name": "pages_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_path_idx": { + "name": "pages_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_categories_id_idx": { + "name": "pages_rels_categories_id_idx", + "columns": [ + { + "expression": "categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pages_rels_testimonials_id_idx": { + "name": "pages_rels_testimonials_id_idx", + "columns": [ + { + "expression": "testimonials_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "pages_rels_parent_fk": { + "name": "pages_rels_parent_fk", + "tableFrom": "pages_rels", + "tableTo": "pages", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "pages_rels_categories_fk": { + "name": "pages_rels_categories_fk", + "tableFrom": "pages_rels", + "tableTo": "categories", + "columnsFrom": [ + "categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "pages_rels_testimonials_fk": { + "name": "pages_rels_testimonials_fk", + "tableFrom": "pages_rels", + "tableTo": "testimonials", + "columnsFrom": [ + "testimonials_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.posts": { + "name": "posts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "enum_posts_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'blog'" + }, + "is_featured": { + "name": "is_featured", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "featured_image_id": { + "name": "featured_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "author": { + "name": "author", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_posts_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'draft'" + }, + "published_at": { + "name": "published_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "seo_og_image_id": { + "name": "seo_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "posts_tenant_idx": { + "name": "posts_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_featured_image_idx": { + "name": "posts_featured_image_idx", + "columns": [ + { + "expression": "featured_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_seo_seo_og_image_idx": { + "name": "posts_seo_seo_og_image_idx", + "columns": [ + { + "expression": "seo_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_updated_at_idx": { + "name": "posts_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_created_at_idx": { + "name": "posts_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "posts_tenant_id_tenants_id_fk": { + "name": "posts_tenant_id_tenants_id_fk", + "tableFrom": "posts", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "posts_featured_image_id_media_id_fk": { + "name": "posts_featured_image_id_media_id_fk", + "tableFrom": "posts", + "tableTo": "media", + "columnsFrom": [ + "featured_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "posts_seo_og_image_id_media_id_fk": { + "name": "posts_seo_og_image_id_media_id_fk", + "tableFrom": "posts", + "tableTo": "media", + "columnsFrom": [ + "seo_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.posts_locales": { + "name": "posts_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "excerpt": { + "name": "excerpt", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "posts_locales_locale_parent_id_unique": { + "name": "posts_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "posts_locales_parent_id_fk": { + "name": "posts_locales_parent_id_fk", + "tableFrom": "posts_locales", + "tableTo": "posts", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.posts_rels": { + "name": "posts_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "categories_id": { + "name": "categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "posts_rels_order_idx": { + "name": "posts_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_rels_parent_idx": { + "name": "posts_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_rels_path_idx": { + "name": "posts_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "posts_rels_categories_id_idx": { + "name": "posts_rels_categories_id_idx", + "columns": [ + { + "expression": "categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "posts_rels_parent_fk": { + "name": "posts_rels_parent_fk", + "tableFrom": "posts_rels", + "tableTo": "posts", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "posts_rels_categories_fk": { + "name": "posts_rels_categories_fk", + "tableFrom": "posts_rels", + "tableTo": "categories", + "columnsFrom": [ + "categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.categories": { + "name": "categories", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "categories_tenant_idx": { + "name": "categories_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "categories_updated_at_idx": { + "name": "categories_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "categories_created_at_idx": { + "name": "categories_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "categories_tenant_id_tenants_id_fk": { + "name": "categories_tenant_id_tenants_id_fk", + "tableFrom": "categories", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.categories_locales": { + "name": "categories_locales", + "schema": "", + "columns": { + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "categories_locales_locale_parent_id_unique": { + "name": "categories_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "categories_locales_parent_id_fk": { + "name": "categories_locales_parent_id_fk", + "tableFrom": "categories_locales", + "tableTo": "categories", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.social_links": { + "name": "social_links", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "platform": { + "name": "platform", + "type": "enum_social_links_platform", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "social_links_tenant_idx": { + "name": "social_links_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "social_links_updated_at_idx": { + "name": "social_links_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "social_links_created_at_idx": { + "name": "social_links_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "social_links_tenant_id_tenants_id_fk": { + "name": "social_links_tenant_id_tenants_id_fk", + "tableFrom": "social_links", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.testimonials": { + "name": "testimonials", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "author": { + "name": "author", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "company": { + "name": "company", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rating": { + "name": "rating", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "source": { + "name": "source", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "source_url": { + "name": "source_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "date": { + "name": "date", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "order": { + "name": "order", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "testimonials_tenant_idx": { + "name": "testimonials_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "testimonials_image_idx": { + "name": "testimonials_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "testimonials_updated_at_idx": { + "name": "testimonials_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "testimonials_created_at_idx": { + "name": "testimonials_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "testimonials_tenant_id_tenants_id_fk": { + "name": "testimonials_tenant_id_tenants_id_fk", + "tableFrom": "testimonials", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "testimonials_image_id_media_id_fk": { + "name": "testimonials_image_id_media_id_fk", + "tableFrom": "testimonials", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.testimonials_locales": { + "name": "testimonials_locales", + "schema": "", + "columns": { + "quote": { + "name": "quote", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "testimonials_locales_locale_parent_id_unique": { + "name": "testimonials_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "testimonials_locales_parent_id_fk": { + "name": "testimonials_locales_parent_id_fk", + "tableFrom": "testimonials_locales", + "tableTo": "testimonials", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.newsletter_subscribers_interests": { + "name": "newsletter_subscribers_interests", + "schema": "", + "columns": { + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "enum_newsletter_subscribers_interests", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + } + }, + "indexes": { + "newsletter_subscribers_interests_order_idx": { + "name": "newsletter_subscribers_interests_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "newsletter_subscribers_interests_parent_idx": { + "name": "newsletter_subscribers_interests_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "newsletter_subscribers_interests_parent_fk": { + "name": "newsletter_subscribers_interests_parent_fk", + "tableFrom": "newsletter_subscribers_interests", + "tableTo": "newsletter_subscribers", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.newsletter_subscribers": { + "name": "newsletter_subscribers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "first_name": { + "name": "first_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "last_name": { + "name": "last_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_newsletter_subscribers_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "source": { + "name": "source", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "subscribed_at": { + "name": "subscribed_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "unsubscribed_at": { + "name": "unsubscribed_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "confirmation_token": { + "name": "confirmation_token", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "ip_address": { + "name": "ip_address", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "newsletter_subscribers_tenant_idx": { + "name": "newsletter_subscribers_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "newsletter_subscribers_updated_at_idx": { + "name": "newsletter_subscribers_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "newsletter_subscribers_created_at_idx": { + "name": "newsletter_subscribers_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "newsletter_subscribers_tenant_id_tenants_id_fk": { + "name": "newsletter_subscribers_tenant_id_tenants_id_fk", + "tableFrom": "newsletter_subscribers", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolio_categories": { + "name": "portfolio_categories", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "cover_image_id": { + "name": "cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "order": { + "name": "order", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "portfolio_categories_tenant_idx": { + "name": "portfolio_categories_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolio_categories_cover_image_idx": { + "name": "portfolio_categories_cover_image_idx", + "columns": [ + { + "expression": "cover_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolio_categories_updated_at_idx": { + "name": "portfolio_categories_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolio_categories_created_at_idx": { + "name": "portfolio_categories_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolio_categories_tenant_id_tenants_id_fk": { + "name": "portfolio_categories_tenant_id_tenants_id_fk", + "tableFrom": "portfolio_categories", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolio_categories_cover_image_id_media_id_fk": { + "name": "portfolio_categories_cover_image_id_media_id_fk", + "tableFrom": "portfolio_categories", + "tableTo": "media", + "columnsFrom": [ + "cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolio_categories_locales": { + "name": "portfolio_categories_locales", + "schema": "", + "columns": { + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "portfolio_categories_locales_locale_parent_id_unique": { + "name": "portfolio_categories_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolio_categories_locales_parent_id_fk": { + "name": "portfolio_categories_locales_parent_id_fk", + "tableFrom": "portfolio_categories_locales", + "tableTo": "portfolio_categories", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_images": { + "name": "portfolios_images", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "image_id": { + "name": "image_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_highlight": { + "name": "is_highlight", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "portfolios_images_order_idx": { + "name": "portfolios_images_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_images_parent_id_idx": { + "name": "portfolios_images_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_images_image_idx": { + "name": "portfolios_images_image_idx", + "columns": [ + { + "expression": "image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_images_image_id_media_id_fk": { + "name": "portfolios_images_image_id_media_id_fk", + "tableFrom": "portfolios_images", + "tableTo": "media", + "columnsFrom": [ + "image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_images_parent_id_fk": { + "name": "portfolios_images_parent_id_fk", + "tableFrom": "portfolios_images", + "tableTo": "portfolios", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_images_locales": { + "name": "portfolios_images_locales", + "schema": "", + "columns": { + "caption": { + "name": "caption", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "portfolios_images_locales_locale_parent_id_unique": { + "name": "portfolios_images_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_images_locales_parent_id_fk": { + "name": "portfolios_images_locales_parent_id_fk", + "tableFrom": "portfolios_images_locales", + "tableTo": "portfolios_images", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios": { + "name": "portfolios", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "slug": { + "name": "slug", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "category_id": { + "name": "category_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cover_image_id": { + "name": "cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_details_client": { + "name": "project_details_client", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "project_details_shooting_date": { + "name": "project_details_shooting_date", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "enum_portfolios_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "is_featured": { + "name": "is_featured", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "published_at": { + "name": "published_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "order": { + "name": "order", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "seo_og_image_id": { + "name": "seo_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "portfolios_tenant_idx": { + "name": "portfolios_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_category_idx": { + "name": "portfolios_category_idx", + "columns": [ + { + "expression": "category_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_cover_image_idx": { + "name": "portfolios_cover_image_idx", + "columns": [ + { + "expression": "cover_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_seo_seo_og_image_idx": { + "name": "portfolios_seo_seo_og_image_idx", + "columns": [ + { + "expression": "seo_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_updated_at_idx": { + "name": "portfolios_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "portfolios_created_at_idx": { + "name": "portfolios_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_tenant_id_tenants_id_fk": { + "name": "portfolios_tenant_id_tenants_id_fk", + "tableFrom": "portfolios", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_category_id_portfolio_categories_id_fk": { + "name": "portfolios_category_id_portfolio_categories_id_fk", + "tableFrom": "portfolios", + "tableTo": "portfolio_categories", + "columnsFrom": [ + "category_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_cover_image_id_media_id_fk": { + "name": "portfolios_cover_image_id_media_id_fk", + "tableFrom": "portfolios", + "tableTo": "media", + "columnsFrom": [ + "cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "portfolios_seo_og_image_id_media_id_fk": { + "name": "portfolios_seo_og_image_id_media_id_fk", + "tableFrom": "portfolios", + "tableTo": "media", + "columnsFrom": [ + "seo_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_locales": { + "name": "portfolios_locales", + "schema": "", + "columns": { + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "excerpt": { + "name": "excerpt", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "project_details_location": { + "name": "project_details_location", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "portfolios_locales_locale_parent_id_unique": { + "name": "portfolios_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_locales_parent_id_fk": { + "name": "portfolios_locales_parent_id_fk", + "tableFrom": "portfolios_locales", + "tableTo": "portfolios", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.portfolios_texts": { + "name": "portfolios_texts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "portfolios_texts_order_parent": { + "name": "portfolios_texts_order_parent", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "portfolios_texts_parent_fk": { + "name": "portfolios_texts_parent_fk", + "tableFrom": "portfolios_texts", + "tableTo": "portfolios", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cookie_configurations_enabled_categories": { + "name": "cookie_configurations_enabled_categories", + "schema": "", + "columns": { + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "enum_cookie_configurations_enabled_categories", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + } + }, + "indexes": { + "cookie_configurations_enabled_categories_order_idx": { + "name": "cookie_configurations_enabled_categories_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_configurations_enabled_categories_parent_idx": { + "name": "cookie_configurations_enabled_categories_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cookie_configurations_enabled_categories_parent_fk": { + "name": "cookie_configurations_enabled_categories_parent_fk", + "tableFrom": "cookie_configurations_enabled_categories", + "tableTo": "cookie_configurations", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cookie_configurations": { + "name": "cookie_configurations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "'Cookie-Einstellungen'" + }, + "revision": { + "name": "revision", + "type": "numeric", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "translations_de_banner_title": { + "name": "translations_de_banner_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Wir respektieren Ihre Privatsphäre'" + }, + "translations_de_banner_description": { + "name": "translations_de_banner_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Website verwendet Cookies, um Ihnen die bestmögliche Erfahrung zu bieten.'" + }, + "translations_de_accept_all_button": { + "name": "translations_de_accept_all_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Alle akzeptieren'" + }, + "translations_de_accept_necessary_button": { + "name": "translations_de_accept_necessary_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Nur notwendige'" + }, + "translations_de_settings_button": { + "name": "translations_de_settings_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Einstellungen'" + }, + "translations_de_save_button": { + "name": "translations_de_save_button", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Auswahl speichern'" + }, + "translations_de_privacy_policy_url": { + "name": "translations_de_privacy_policy_url", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'/datenschutz'" + }, + "translations_de_category_labels_necessary_title": { + "name": "translations_de_category_labels_necessary_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Notwendig'" + }, + "translations_de_category_labels_necessary_description": { + "name": "translations_de_category_labels_necessary_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies sind für die Grundfunktionen der Website erforderlich.'" + }, + "translations_de_category_labels_functional_title": { + "name": "translations_de_category_labels_functional_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Funktional'" + }, + "translations_de_category_labels_functional_description": { + "name": "translations_de_category_labels_functional_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies ermöglichen erweiterte Funktionen.'" + }, + "translations_de_category_labels_analytics_title": { + "name": "translations_de_category_labels_analytics_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Statistik'" + }, + "translations_de_category_labels_analytics_description": { + "name": "translations_de_category_labels_analytics_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies helfen uns zu verstehen, wie Besucher die Website nutzen.'" + }, + "translations_de_category_labels_marketing_title": { + "name": "translations_de_category_labels_marketing_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Marketing'" + }, + "translations_de_category_labels_marketing_description": { + "name": "translations_de_category_labels_marketing_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Diese Cookies werden für Werbezwecke verwendet.'" + }, + "styling_position": { + "name": "styling_position", + "type": "enum_cookie_configurations_styling_position", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'bottom'" + }, + "styling_theme": { + "name": "styling_theme", + "type": "enum_cookie_configurations_styling_theme", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'dark'" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "cookie_configurations_tenant_idx": { + "name": "cookie_configurations_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_configurations_updated_at_idx": { + "name": "cookie_configurations_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_configurations_created_at_idx": { + "name": "cookie_configurations_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cookie_configurations_tenant_id_tenants_id_fk": { + "name": "cookie_configurations_tenant_id_tenants_id_fk", + "tableFrom": "cookie_configurations", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cookie_inventory": { + "name": "cookie_inventory", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "enum_cookie_inventory_category", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "duration": { + "name": "duration", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "cookie_inventory_tenant_idx": { + "name": "cookie_inventory_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_inventory_updated_at_idx": { + "name": "cookie_inventory_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cookie_inventory_created_at_idx": { + "name": "cookie_inventory_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cookie_inventory_tenant_id_tenants_id_fk": { + "name": "cookie_inventory_tenant_id_tenants_id_fk", + "tableFrom": "cookie_inventory", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.consent_logs": { + "name": "consent_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "consent_id": { + "name": "consent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "client_ref": { + "name": "client_ref", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "categories": { + "name": "categories", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "revision": { + "name": "revision", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "user_agent": { + "name": "user_agent", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "anonymized_ip": { + "name": "anonymized_ip", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "consent_logs_consent_id_idx": { + "name": "consent_logs_consent_id_idx", + "columns": [ + { + "expression": "consent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_tenant_idx": { + "name": "consent_logs_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_updated_at_idx": { + "name": "consent_logs_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_created_at_idx": { + "name": "consent_logs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "consent_logs_tenant_id_tenants_id_fk": { + "name": "consent_logs_tenant_id_tenants_id_fk", + "tableFrom": "consent_logs", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.privacy_policy_settings": { + "name": "privacy_policy_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "'Datenschutzerklärung'" + }, + "provider": { + "name": "provider", + "type": "enum_privacy_policy_settings_provider", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'alfright'" + }, + "alfright_tenant_id": { + "name": "alfright_tenant_id", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'alfright_schutzteam'" + }, + "alfright_api_key": { + "name": "alfright_api_key", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "alfright_language": { + "name": "alfright_language", + "type": "enum_privacy_policy_settings_alfright_language", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'de-de'" + }, + "alfright_iframe_height": { + "name": "alfright_iframe_height", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": 4000 + }, + "styling_header_color": { + "name": "styling_header_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#ca8a04'" + }, + "styling_header_font": { + "name": "styling_header_font", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Inter, sans-serif'" + }, + "styling_header_size": { + "name": "styling_header_size", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'24px'" + }, + "styling_subheader_size": { + "name": "styling_subheader_size", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'18px'" + }, + "styling_font_color": { + "name": "styling_font_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#f3f4f6'" + }, + "styling_text_font": { + "name": "styling_text_font", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Inter, sans-serif'" + }, + "styling_text_size": { + "name": "styling_text_size", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'16px'" + }, + "styling_link_color": { + "name": "styling_link_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#ca8a04'" + }, + "styling_background_color": { + "name": "styling_background_color", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'#111827'" + }, + "show_cookie_table": { + "name": "show_cookie_table", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "cookie_table_title": { + "name": "cookie_table_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Übersicht der verwendeten Cookies'" + }, + "cookie_table_description": { + "name": "cookie_table_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Ergänzend zur Datenschutzerklärung finden Sie hier eine detaillierte Übersicht aller auf dieser Website eingesetzten Cookies. Sie können Ihre Cookie-Einstellungen jederzeit über den Link \"Cookie-Einstellungen\" im Footer anpassen.'" + }, + "seo_meta_title": { + "name": "seo_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Datenschutzerklärung'" + }, + "seo_meta_description": { + "name": "seo_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Informationen zum Datenschutz und zur Verarbeitung Ihrer personenbezogenen Daten.'" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "privacy_policy_settings_tenant_idx": { + "name": "privacy_policy_settings_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "privacy_policy_settings_updated_at_idx": { + "name": "privacy_policy_settings_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "privacy_policy_settings_created_at_idx": { + "name": "privacy_policy_settings_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "privacy_policy_settings_tenant_id_tenants_id_fk": { + "name": "privacy_policy_settings_tenant_id_tenants_id_fk", + "tableFrom": "privacy_policy_settings", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.email_logs": { + "name": "email_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "to": { + "name": "to", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "from": { + "name": "from", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "enum_email_logs_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "message_id": { + "name": "message_id", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "error": { + "name": "error", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "source": { + "name": "source", + "type": "enum_email_logs_source", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'manual'" + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "email_logs_tenant_idx": { + "name": "email_logs_tenant_idx", + "columns": [ + { + "expression": "tenant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "email_logs_updated_at_idx": { + "name": "email_logs_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "email_logs_created_at_idx": { + "name": "email_logs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "email_logs_tenant_id_tenants_id_fk": { + "name": "email_logs_tenant_id_tenants_id_fk", + "tableFrom": "email_logs", + "tableTo": "tenants", + "columnsFrom": [ + "tenant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_checkbox": { + "name": "forms_blocks_checkbox", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_checkbox_order_idx": { + "name": "forms_blocks_checkbox_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_checkbox_parent_id_idx": { + "name": "forms_blocks_checkbox_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_checkbox_path_idx": { + "name": "forms_blocks_checkbox_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_checkbox_parent_id_fk": { + "name": "forms_blocks_checkbox_parent_id_fk", + "tableFrom": "forms_blocks_checkbox", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_checkbox_locales": { + "name": "forms_blocks_checkbox_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_checkbox_locales_locale_parent_id_unique": { + "name": "forms_blocks_checkbox_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_checkbox_locales_parent_id_fk": { + "name": "forms_blocks_checkbox_locales_parent_id_fk", + "tableFrom": "forms_blocks_checkbox_locales", + "tableTo": "forms_blocks_checkbox", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_email": { + "name": "forms_blocks_email", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_email_order_idx": { + "name": "forms_blocks_email_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_email_parent_id_idx": { + "name": "forms_blocks_email_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_email_path_idx": { + "name": "forms_blocks_email_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_email_parent_id_fk": { + "name": "forms_blocks_email_parent_id_fk", + "tableFrom": "forms_blocks_email", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_email_locales": { + "name": "forms_blocks_email_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_email_locales_locale_parent_id_unique": { + "name": "forms_blocks_email_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_email_locales_parent_id_fk": { + "name": "forms_blocks_email_locales_parent_id_fk", + "tableFrom": "forms_blocks_email_locales", + "tableTo": "forms_blocks_email", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_message": { + "name": "forms_blocks_message", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_message_order_idx": { + "name": "forms_blocks_message_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_message_parent_id_idx": { + "name": "forms_blocks_message_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_message_path_idx": { + "name": "forms_blocks_message_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_message_parent_id_fk": { + "name": "forms_blocks_message_parent_id_fk", + "tableFrom": "forms_blocks_message", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_message_locales": { + "name": "forms_blocks_message_locales", + "schema": "", + "columns": { + "message": { + "name": "message", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_message_locales_locale_parent_id_unique": { + "name": "forms_blocks_message_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_message_locales_parent_id_fk": { + "name": "forms_blocks_message_locales_parent_id_fk", + "tableFrom": "forms_blocks_message_locales", + "tableTo": "forms_blocks_message", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_number": { + "name": "forms_blocks_number", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_number_order_idx": { + "name": "forms_blocks_number_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_number_parent_id_idx": { + "name": "forms_blocks_number_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_number_path_idx": { + "name": "forms_blocks_number_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_number_parent_id_fk": { + "name": "forms_blocks_number_parent_id_fk", + "tableFrom": "forms_blocks_number", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_number_locales": { + "name": "forms_blocks_number_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_number_locales_locale_parent_id_unique": { + "name": "forms_blocks_number_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_number_locales_parent_id_fk": { + "name": "forms_blocks_number_locales_parent_id_fk", + "tableFrom": "forms_blocks_number_locales", + "tableTo": "forms_blocks_number", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select_options": { + "name": "forms_blocks_select_options", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "value": { + "name": "value", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_select_options_order_idx": { + "name": "forms_blocks_select_options_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_select_options_parent_id_idx": { + "name": "forms_blocks_select_options_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_options_parent_id_fk": { + "name": "forms_blocks_select_options_parent_id_fk", + "tableFrom": "forms_blocks_select_options", + "tableTo": "forms_blocks_select", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select_options_locales": { + "name": "forms_blocks_select_options_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_select_options_locales_locale_parent_id_unique": { + "name": "forms_blocks_select_options_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_options_locales_parent_id_fk": { + "name": "forms_blocks_select_options_locales_parent_id_fk", + "tableFrom": "forms_blocks_select_options_locales", + "tableTo": "forms_blocks_select_options", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select": { + "name": "forms_blocks_select", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "placeholder": { + "name": "placeholder", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_select_order_idx": { + "name": "forms_blocks_select_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_select_parent_id_idx": { + "name": "forms_blocks_select_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_select_path_idx": { + "name": "forms_blocks_select_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_parent_id_fk": { + "name": "forms_blocks_select_parent_id_fk", + "tableFrom": "forms_blocks_select", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_select_locales": { + "name": "forms_blocks_select_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_select_locales_locale_parent_id_unique": { + "name": "forms_blocks_select_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_select_locales_parent_id_fk": { + "name": "forms_blocks_select_locales_parent_id_fk", + "tableFrom": "forms_blocks_select_locales", + "tableTo": "forms_blocks_select", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_text": { + "name": "forms_blocks_text", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_text_order_idx": { + "name": "forms_blocks_text_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_text_parent_id_idx": { + "name": "forms_blocks_text_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_text_path_idx": { + "name": "forms_blocks_text_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_text_parent_id_fk": { + "name": "forms_blocks_text_parent_id_fk", + "tableFrom": "forms_blocks_text", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_text_locales": { + "name": "forms_blocks_text_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_text_locales_locale_parent_id_unique": { + "name": "forms_blocks_text_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_text_locales_parent_id_fk": { + "name": "forms_blocks_text_locales_parent_id_fk", + "tableFrom": "forms_blocks_text_locales", + "tableTo": "forms_blocks_text", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_textarea": { + "name": "forms_blocks_textarea", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_path": { + "name": "_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "block_name": { + "name": "block_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_blocks_textarea_order_idx": { + "name": "forms_blocks_textarea_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_textarea_parent_id_idx": { + "name": "forms_blocks_textarea_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_blocks_textarea_path_idx": { + "name": "forms_blocks_textarea_path_idx", + "columns": [ + { + "expression": "_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_textarea_parent_id_fk": { + "name": "forms_blocks_textarea_parent_id_fk", + "tableFrom": "forms_blocks_textarea", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_blocks_textarea_locales": { + "name": "forms_blocks_textarea_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "default_value": { + "name": "default_value", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_blocks_textarea_locales_locale_parent_id_unique": { + "name": "forms_blocks_textarea_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_blocks_textarea_locales_parent_id_fk": { + "name": "forms_blocks_textarea_locales_parent_id_fk", + "tableFrom": "forms_blocks_textarea_locales", + "tableTo": "forms_blocks_textarea", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_emails": { + "name": "forms_emails", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "email_to": { + "name": "email_to", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "cc": { + "name": "cc", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "bcc": { + "name": "bcc", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "reply_to": { + "name": "reply_to", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "email_from": { + "name": "email_from", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_emails_order_idx": { + "name": "forms_emails_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_emails_parent_id_idx": { + "name": "forms_emails_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_emails_parent_id_fk": { + "name": "forms_emails_parent_id_fk", + "tableFrom": "forms_emails", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_emails_locales": { + "name": "forms_emails_locales", + "schema": "", + "columns": { + "subject": { + "name": "subject", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "'You''ve received a new message.'" + }, + "message": { + "name": "message", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_emails_locales_locale_parent_id_unique": { + "name": "forms_emails_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_emails_locales_parent_id_fk": { + "name": "forms_emails_locales_parent_id_fk", + "tableFrom": "forms_emails_locales", + "tableTo": "forms_emails", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms": { + "name": "forms", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "confirmation_type": { + "name": "confirmation_type", + "type": "enum_forms_confirmation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'message'" + }, + "redirect_type": { + "name": "redirect_type", + "type": "enum_forms_redirect_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'reference'" + }, + "redirect_url": { + "name": "redirect_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "forms_updated_at_idx": { + "name": "forms_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_created_at_idx": { + "name": "forms_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_locales": { + "name": "forms_locales", + "schema": "", + "columns": { + "submit_button_label": { + "name": "submit_button_label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "confirmation_message": { + "name": "confirmation_message", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "forms_locales_locale_parent_id_unique": { + "name": "forms_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_locales_parent_id_fk": { + "name": "forms_locales_parent_id_fk", + "tableFrom": "forms_locales", + "tableTo": "forms", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms_rels": { + "name": "forms_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "pages_id": { + "name": "pages_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "forms_rels_order_idx": { + "name": "forms_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_rels_parent_idx": { + "name": "forms_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_rels_path_idx": { + "name": "forms_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "forms_rels_pages_id_idx": { + "name": "forms_rels_pages_id_idx", + "columns": [ + { + "expression": "pages_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_rels_parent_fk": { + "name": "forms_rels_parent_fk", + "tableFrom": "forms_rels", + "tableTo": "forms", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "forms_rels_pages_fk": { + "name": "forms_rels_pages_fk", + "tableFrom": "forms_rels", + "tableTo": "pages", + "columnsFrom": [ + "pages_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.form_submissions_submission_data": { + "name": "form_submissions_submission_data", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "field": { + "name": "field", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "form_submissions_submission_data_order_idx": { + "name": "form_submissions_submission_data_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "form_submissions_submission_data_parent_id_idx": { + "name": "form_submissions_submission_data_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "form_submissions_submission_data_parent_id_fk": { + "name": "form_submissions_submission_data_parent_id_fk", + "tableFrom": "form_submissions_submission_data", + "tableTo": "form_submissions", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.form_submissions": { + "name": "form_submissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "form_id": { + "name": "form_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "form_submissions_form_idx": { + "name": "form_submissions_form_idx", + "columns": [ + { + "expression": "form_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "form_submissions_updated_at_idx": { + "name": "form_submissions_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "form_submissions_created_at_idx": { + "name": "form_submissions_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "form_submissions_form_id_forms_id_fk": { + "name": "form_submissions_form_id_forms_id_fk", + "tableFrom": "form_submissions", + "tableTo": "forms", + "columnsFrom": [ + "form_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.redirects": { + "name": "redirects", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "from": { + "name": "from", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "to_type": { + "name": "to_type", + "type": "enum_redirects_to_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'reference'" + }, + "to_url": { + "name": "to_url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "redirects_from_idx": { + "name": "redirects_from_idx", + "columns": [ + { + "expression": "from", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_updated_at_idx": { + "name": "redirects_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_created_at_idx": { + "name": "redirects_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.redirects_rels": { + "name": "redirects_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "pages_id": { + "name": "pages_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "redirects_rels_order_idx": { + "name": "redirects_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_rels_parent_idx": { + "name": "redirects_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_rels_path_idx": { + "name": "redirects_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "redirects_rels_pages_id_idx": { + "name": "redirects_rels_pages_id_idx", + "columns": [ + { + "expression": "pages_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "redirects_rels_parent_fk": { + "name": "redirects_rels_parent_fk", + "tableFrom": "redirects_rels", + "tableTo": "redirects", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "redirects_rels_pages_fk": { + "name": "redirects_rels_pages_fk", + "tableFrom": "redirects_rels", + "tableTo": "pages", + "columnsFrom": [ + "pages_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_kv": { + "name": "payload_kv", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "payload_kv_key_idx": { + "name": "payload_kv_key_idx", + "columns": [ + { + "expression": "key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_locked_documents": { + "name": "payload_locked_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "global_slug": { + "name": "global_slug", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "payload_locked_documents_global_slug_idx": { + "name": "payload_locked_documents_global_slug_idx", + "columns": [ + { + "expression": "global_slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_updated_at_idx": { + "name": "payload_locked_documents_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_created_at_idx": { + "name": "payload_locked_documents_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_locked_documents_rels": { + "name": "payload_locked_documents_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "users_id": { + "name": "users_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "media_id": { + "name": "media_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "tenants_id": { + "name": "tenants_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "pages_id": { + "name": "pages_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "posts_id": { + "name": "posts_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "categories_id": { + "name": "categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "social_links_id": { + "name": "social_links_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "testimonials_id": { + "name": "testimonials_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "newsletter_subscribers_id": { + "name": "newsletter_subscribers_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "portfolio_categories_id": { + "name": "portfolio_categories_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "portfolios_id": { + "name": "portfolios_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cookie_configurations_id": { + "name": "cookie_configurations_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cookie_inventory_id": { + "name": "cookie_inventory_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "consent_logs_id": { + "name": "consent_logs_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "privacy_policy_settings_id": { + "name": "privacy_policy_settings_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "email_logs_id": { + "name": "email_logs_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "forms_id": { + "name": "forms_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "form_submissions_id": { + "name": "form_submissions_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "redirects_id": { + "name": "redirects_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "payload_locked_documents_rels_order_idx": { + "name": "payload_locked_documents_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_parent_idx": { + "name": "payload_locked_documents_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_path_idx": { + "name": "payload_locked_documents_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_users_id_idx": { + "name": "payload_locked_documents_rels_users_id_idx", + "columns": [ + { + "expression": "users_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_media_id_idx": { + "name": "payload_locked_documents_rels_media_id_idx", + "columns": [ + { + "expression": "media_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_tenants_id_idx": { + "name": "payload_locked_documents_rels_tenants_id_idx", + "columns": [ + { + "expression": "tenants_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_pages_id_idx": { + "name": "payload_locked_documents_rels_pages_id_idx", + "columns": [ + { + "expression": "pages_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_posts_id_idx": { + "name": "payload_locked_documents_rels_posts_id_idx", + "columns": [ + { + "expression": "posts_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_categories_id_idx": { + "name": "payload_locked_documents_rels_categories_id_idx", + "columns": [ + { + "expression": "categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_social_links_id_idx": { + "name": "payload_locked_documents_rels_social_links_id_idx", + "columns": [ + { + "expression": "social_links_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_testimonials_id_idx": { + "name": "payload_locked_documents_rels_testimonials_id_idx", + "columns": [ + { + "expression": "testimonials_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_newsletter_subscribers_id_idx": { + "name": "payload_locked_documents_rels_newsletter_subscribers_id_idx", + "columns": [ + { + "expression": "newsletter_subscribers_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_portfolio_categories_id_idx": { + "name": "payload_locked_documents_rels_portfolio_categories_id_idx", + "columns": [ + { + "expression": "portfolio_categories_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_portfolios_id_idx": { + "name": "payload_locked_documents_rels_portfolios_id_idx", + "columns": [ + { + "expression": "portfolios_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_cookie_configurations_id_idx": { + "name": "payload_locked_documents_rels_cookie_configurations_id_idx", + "columns": [ + { + "expression": "cookie_configurations_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_cookie_inventory_id_idx": { + "name": "payload_locked_documents_rels_cookie_inventory_id_idx", + "columns": [ + { + "expression": "cookie_inventory_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_consent_logs_id_idx": { + "name": "payload_locked_documents_rels_consent_logs_id_idx", + "columns": [ + { + "expression": "consent_logs_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_privacy_policy_settings_id_idx": { + "name": "payload_locked_documents_rels_privacy_policy_settings_id_idx", + "columns": [ + { + "expression": "privacy_policy_settings_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_email_logs_id_idx": { + "name": "payload_locked_documents_rels_email_logs_id_idx", + "columns": [ + { + "expression": "email_logs_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_forms_id_idx": { + "name": "payload_locked_documents_rels_forms_id_idx", + "columns": [ + { + "expression": "forms_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_form_submissions_id_idx": { + "name": "payload_locked_documents_rels_form_submissions_id_idx", + "columns": [ + { + "expression": "form_submissions_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_locked_documents_rels_redirects_id_idx": { + "name": "payload_locked_documents_rels_redirects_id_idx", + "columns": [ + { + "expression": "redirects_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "payload_locked_documents_rels_parent_fk": { + "name": "payload_locked_documents_rels_parent_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "payload_locked_documents", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_users_fk": { + "name": "payload_locked_documents_rels_users_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "users", + "columnsFrom": [ + "users_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_media_fk": { + "name": "payload_locked_documents_rels_media_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "media", + "columnsFrom": [ + "media_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_tenants_fk": { + "name": "payload_locked_documents_rels_tenants_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "tenants", + "columnsFrom": [ + "tenants_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_pages_fk": { + "name": "payload_locked_documents_rels_pages_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "pages", + "columnsFrom": [ + "pages_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_posts_fk": { + "name": "payload_locked_documents_rels_posts_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "posts", + "columnsFrom": [ + "posts_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_categories_fk": { + "name": "payload_locked_documents_rels_categories_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "categories", + "columnsFrom": [ + "categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_social_links_fk": { + "name": "payload_locked_documents_rels_social_links_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "social_links", + "columnsFrom": [ + "social_links_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_testimonials_fk": { + "name": "payload_locked_documents_rels_testimonials_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "testimonials", + "columnsFrom": [ + "testimonials_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_newsletter_subscribers_fk": { + "name": "payload_locked_documents_rels_newsletter_subscribers_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "newsletter_subscribers", + "columnsFrom": [ + "newsletter_subscribers_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_portfolio_categories_fk": { + "name": "payload_locked_documents_rels_portfolio_categories_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "portfolio_categories", + "columnsFrom": [ + "portfolio_categories_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_portfolios_fk": { + "name": "payload_locked_documents_rels_portfolios_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "portfolios", + "columnsFrom": [ + "portfolios_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_cookie_configurations_fk": { + "name": "payload_locked_documents_rels_cookie_configurations_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "cookie_configurations", + "columnsFrom": [ + "cookie_configurations_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_cookie_inventory_fk": { + "name": "payload_locked_documents_rels_cookie_inventory_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "cookie_inventory", + "columnsFrom": [ + "cookie_inventory_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_consent_logs_fk": { + "name": "payload_locked_documents_rels_consent_logs_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "consent_logs", + "columnsFrom": [ + "consent_logs_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_privacy_policy_settings_fk": { + "name": "payload_locked_documents_rels_privacy_policy_settings_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "privacy_policy_settings", + "columnsFrom": [ + "privacy_policy_settings_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_email_logs_fk": { + "name": "payload_locked_documents_rels_email_logs_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "email_logs", + "columnsFrom": [ + "email_logs_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_forms_fk": { + "name": "payload_locked_documents_rels_forms_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "forms", + "columnsFrom": [ + "forms_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_form_submissions_fk": { + "name": "payload_locked_documents_rels_form_submissions_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "form_submissions", + "columnsFrom": [ + "form_submissions_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_redirects_fk": { + "name": "payload_locked_documents_rels_redirects_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "redirects", + "columnsFrom": [ + "redirects_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_preferences": { + "name": "payload_preferences", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "value": { + "name": "value", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "payload_preferences_key_idx": { + "name": "payload_preferences_key_idx", + "columns": [ + { + "expression": "key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_updated_at_idx": { + "name": "payload_preferences_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_created_at_idx": { + "name": "payload_preferences_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_preferences_rels": { + "name": "payload_preferences_rels", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "users_id": { + "name": "users_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "payload_preferences_rels_order_idx": { + "name": "payload_preferences_rels_order_idx", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_rels_parent_idx": { + "name": "payload_preferences_rels_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_rels_path_idx": { + "name": "payload_preferences_rels_path_idx", + "columns": [ + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_preferences_rels_users_id_idx": { + "name": "payload_preferences_rels_users_id_idx", + "columns": [ + { + "expression": "users_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "payload_preferences_rels_parent_fk": { + "name": "payload_preferences_rels_parent_fk", + "tableFrom": "payload_preferences_rels", + "tableTo": "payload_preferences", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_preferences_rels_users_fk": { + "name": "payload_preferences_rels_users_fk", + "tableFrom": "payload_preferences_rels", + "tableTo": "users", + "columnsFrom": [ + "users_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payload_migrations": { + "name": "payload_migrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "batch": { + "name": "batch", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "payload_migrations_updated_at_idx": { + "name": "payload_migrations_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "payload_migrations_created_at_idx": { + "name": "payload_migrations_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.site_settings": { + "name": "site_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "logo_id": { + "name": "logo_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "favicon_id": { + "name": "favicon_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_address": { + "name": "contact_address", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "footer_show_social_links": { + "name": "footer_show_social_links", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "seo_default_og_image_id": { + "name": "seo_default_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "site_settings_logo_idx": { + "name": "site_settings_logo_idx", + "columns": [ + { + "expression": "logo_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "site_settings_favicon_idx": { + "name": "site_settings_favicon_idx", + "columns": [ + { + "expression": "favicon_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "site_settings_seo_seo_default_og_image_idx": { + "name": "site_settings_seo_seo_default_og_image_idx", + "columns": [ + { + "expression": "seo_default_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "site_settings_logo_id_media_id_fk": { + "name": "site_settings_logo_id_media_id_fk", + "tableFrom": "site_settings", + "tableTo": "media", + "columnsFrom": [ + "logo_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "site_settings_favicon_id_media_id_fk": { + "name": "site_settings_favicon_id_media_id_fk", + "tableFrom": "site_settings", + "tableTo": "media", + "columnsFrom": [ + "favicon_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "site_settings_seo_default_og_image_id_media_id_fk": { + "name": "site_settings_seo_default_og_image_id_media_id_fk", + "tableFrom": "site_settings", + "tableTo": "media", + "columnsFrom": [ + "seo_default_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.site_settings_locales": { + "name": "site_settings_locales", + "schema": "", + "columns": { + "site_name": { + "name": "site_name", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'porwoll.de'" + }, + "site_tagline": { + "name": "site_tagline", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "footer_copyright_text": { + "name": "footer_copyright_text", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_default_meta_title": { + "name": "seo_default_meta_title", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "seo_default_meta_description": { + "name": "seo_default_meta_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "site_settings_locales_locale_parent_id_unique": { + "name": "site_settings_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "site_settings_locales_parent_id_fk": { + "name": "site_settings_locales_parent_id_fk", + "tableFrom": "site_settings_locales", + "tableTo": "site_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu_submenu": { + "name": "navigation_main_menu_submenu", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "link_type": { + "name": "link_type", + "type": "enum_navigation_main_menu_submenu_link_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'page'" + }, + "page_id": { + "name": "page_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "navigation_main_menu_submenu_order_idx": { + "name": "navigation_main_menu_submenu_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_submenu_parent_id_idx": { + "name": "navigation_main_menu_submenu_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_submenu_page_idx": { + "name": "navigation_main_menu_submenu_page_idx", + "columns": [ + { + "expression": "page_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_submenu_page_id_pages_id_fk": { + "name": "navigation_main_menu_submenu_page_id_pages_id_fk", + "tableFrom": "navigation_main_menu_submenu", + "tableTo": "pages", + "columnsFrom": [ + "page_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "navigation_main_menu_submenu_parent_id_fk": { + "name": "navigation_main_menu_submenu_parent_id_fk", + "tableFrom": "navigation_main_menu_submenu", + "tableTo": "navigation_main_menu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu_submenu_locales": { + "name": "navigation_main_menu_submenu_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "navigation_main_menu_submenu_locales_locale_parent_id_unique": { + "name": "navigation_main_menu_submenu_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_submenu_locales_parent_id_fk": { + "name": "navigation_main_menu_submenu_locales_parent_id_fk", + "tableFrom": "navigation_main_menu_submenu_locales", + "tableTo": "navigation_main_menu_submenu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu": { + "name": "navigation_main_menu", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "type": { + "name": "type", + "type": "enum_navigation_main_menu_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'page'" + }, + "page_id": { + "name": "page_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "open_in_new_tab": { + "name": "open_in_new_tab", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "navigation_main_menu_order_idx": { + "name": "navigation_main_menu_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_parent_id_idx": { + "name": "navigation_main_menu_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_main_menu_page_idx": { + "name": "navigation_main_menu_page_idx", + "columns": [ + { + "expression": "page_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_page_id_pages_id_fk": { + "name": "navigation_main_menu_page_id_pages_id_fk", + "tableFrom": "navigation_main_menu", + "tableTo": "pages", + "columnsFrom": [ + "page_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "navigation_main_menu_parent_id_fk": { + "name": "navigation_main_menu_parent_id_fk", + "tableFrom": "navigation_main_menu", + "tableTo": "navigation", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_main_menu_locales": { + "name": "navigation_main_menu_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "navigation_main_menu_locales_locale_parent_id_unique": { + "name": "navigation_main_menu_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_main_menu_locales_parent_id_fk": { + "name": "navigation_main_menu_locales_parent_id_fk", + "tableFrom": "navigation_main_menu_locales", + "tableTo": "navigation_main_menu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_footer_menu": { + "name": "navigation_footer_menu", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "link_type": { + "name": "link_type", + "type": "enum_navigation_footer_menu_link_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'page'" + }, + "page_id": { + "name": "page_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "navigation_footer_menu_order_idx": { + "name": "navigation_footer_menu_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_footer_menu_parent_id_idx": { + "name": "navigation_footer_menu_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "navigation_footer_menu_page_idx": { + "name": "navigation_footer_menu_page_idx", + "columns": [ + { + "expression": "page_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_footer_menu_page_id_pages_id_fk": { + "name": "navigation_footer_menu_page_id_pages_id_fk", + "tableFrom": "navigation_footer_menu", + "tableTo": "pages", + "columnsFrom": [ + "page_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "navigation_footer_menu_parent_id_fk": { + "name": "navigation_footer_menu_parent_id_fk", + "tableFrom": "navigation_footer_menu", + "tableTo": "navigation", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation_footer_menu_locales": { + "name": "navigation_footer_menu_locales", + "schema": "", + "columns": { + "label": { + "name": "label", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "navigation_footer_menu_locales_locale_parent_id_unique": { + "name": "navigation_footer_menu_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "navigation_footer_menu_locales_parent_id_fk": { + "name": "navigation_footer_menu_locales_parent_id_fk", + "tableFrom": "navigation_footer_menu_locales", + "tableTo": "navigation_footer_menu", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.navigation": { + "name": "navigation", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_social_profiles": { + "name": "seo_settings_social_profiles", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "enum_seo_settings_social_profiles_platform", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "seo_settings_social_profiles_order_idx": { + "name": "seo_settings_social_profiles_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "seo_settings_social_profiles_parent_id_idx": { + "name": "seo_settings_social_profiles_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_social_profiles_parent_id_fk": { + "name": "seo_settings_social_profiles_parent_id_fk", + "tableFrom": "seo_settings_social_profiles", + "tableTo": "seo_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_local_business_opening_hours": { + "name": "seo_settings_local_business_opening_hours", + "schema": "", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar", + "primaryKey": true, + "notNull": true + }, + "specification": { + "name": "specification", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "seo_settings_local_business_opening_hours_order_idx": { + "name": "seo_settings_local_business_opening_hours_order_idx", + "columns": [ + { + "expression": "_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "seo_settings_local_business_opening_hours_parent_id_idx": { + "name": "seo_settings_local_business_opening_hours_parent_id_idx", + "columns": [ + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_local_business_opening_hours_parent_id_fk": { + "name": "seo_settings_local_business_opening_hours_parent_id_fk", + "tableFrom": "seo_settings_local_business_opening_hours", + "tableTo": "seo_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings": { + "name": "seo_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "meta_defaults_default_og_image_id": { + "name": "meta_defaults_default_og_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "organization_name": { + "name": "organization_name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "organization_legal_name": { + "name": "organization_legal_name", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "organization_logo_id": { + "name": "organization_logo_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "organization_founding_date": { + "name": "organization_founding_date", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "contact_fax": { + "name": "contact_fax", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_street": { + "name": "address_street", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_postal_code": { + "name": "address_postal_code", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_city": { + "name": "address_city", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_region": { + "name": "address_region", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "address_country": { + "name": "address_country", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'Deutschland'" + }, + "address_country_code": { + "name": "address_country_code", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'DE'" + }, + "geo_latitude": { + "name": "geo_latitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "geo_longitude": { + "name": "geo_longitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "local_business_enabled": { + "name": "local_business_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "local_business_type": { + "name": "local_business_type", + "type": "enum_seo_settings_local_business_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "local_business_price_range": { + "name": "local_business_price_range", + "type": "enum_seo_settings_local_business_price_range", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "robots_allow_indexing": { + "name": "robots_allow_indexing", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "verification_google": { + "name": "verification_google", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "verification_bing": { + "name": "verification_bing", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "verification_yandex": { + "name": "verification_yandex", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp(3) with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "seo_settings_meta_defaults_meta_defaults_default_og_imag_idx": { + "name": "seo_settings_meta_defaults_meta_defaults_default_og_imag_idx", + "columns": [ + { + "expression": "meta_defaults_default_og_image_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "seo_settings_organization_organization_logo_idx": { + "name": "seo_settings_organization_organization_logo_idx", + "columns": [ + { + "expression": "organization_logo_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_meta_defaults_default_og_image_id_media_id_fk": { + "name": "seo_settings_meta_defaults_default_og_image_id_media_id_fk", + "tableFrom": "seo_settings", + "tableTo": "media", + "columnsFrom": [ + "meta_defaults_default_og_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "seo_settings_organization_logo_id_media_id_fk": { + "name": "seo_settings_organization_logo_id_media_id_fk", + "tableFrom": "seo_settings", + "tableTo": "media", + "columnsFrom": [ + "organization_logo_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_locales": { + "name": "seo_settings_locales", + "schema": "", + "columns": { + "meta_defaults_title_suffix": { + "name": "meta_defaults_title_suffix", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'| Website'" + }, + "meta_defaults_default_description": { + "name": "meta_defaults_default_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "organization_description": { + "name": "organization_description", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "_locale": { + "name": "_locale", + "type": "_locales", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "seo_settings_locales_locale_parent_id_unique": { + "name": "seo_settings_locales_locale_parent_id_unique", + "columns": [ + { + "expression": "_locale", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "_parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_locales_parent_id_fk": { + "name": "seo_settings_locales_parent_id_fk", + "tableFrom": "seo_settings_locales", + "tableTo": "seo_settings", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.seo_settings_texts": { + "name": "seo_settings_texts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "text": { + "name": "text", + "type": "varchar", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "seo_settings_texts_order_parent": { + "name": "seo_settings_texts_order_parent", + "columns": [ + { + "expression": "order", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "seo_settings_texts_parent_fk": { + "name": "seo_settings_texts_parent_fk", + "tableFrom": "seo_settings_texts", + "tableTo": "seo_settings", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public._locales": { + "name": "_locales", + "schema": "public", + "values": [ + "de", + "en" + ] + }, + "public.enum_pages_blocks_hero_block_alignment": { + "name": "enum_pages_blocks_hero_block_alignment", + "schema": "public", + "values": [ + "left", + "center", + "right" + ] + }, + "public.enum_pages_blocks_hero_block_cta_style": { + "name": "enum_pages_blocks_hero_block_cta_style", + "schema": "public", + "values": [ + "primary", + "secondary", + "outline" + ] + }, + "public.enum_pages_blocks_text_block_width": { + "name": "enum_pages_blocks_text_block_width", + "schema": "public", + "values": [ + "narrow", + "medium", + "full" + ] + }, + "public.enum_pages_blocks_image_text_block_image_position": { + "name": "enum_pages_blocks_image_text_block_image_position", + "schema": "public", + "values": [ + "left", + "right" + ] + }, + "public.enum_pages_blocks_card_grid_block_columns": { + "name": "enum_pages_blocks_card_grid_block_columns", + "schema": "public", + "values": [ + "2", + "3", + "4" + ] + }, + "public.enum_pages_blocks_quote_block_style": { + "name": "enum_pages_blocks_quote_block_style", + "schema": "public", + "values": [ + "simple", + "highlighted", + "with-image" + ] + }, + "public.enum_pages_blocks_cta_block_buttons_style": { + "name": "enum_pages_blocks_cta_block_buttons_style", + "schema": "public", + "values": [ + "primary", + "secondary", + "outline" + ] + }, + "public.enum_pages_blocks_cta_block_background_color": { + "name": "enum_pages_blocks_cta_block_background_color", + "schema": "public", + "values": [ + "dark", + "light", + "accent" + ] + }, + "public.enum_pages_blocks_timeline_block_layout": { + "name": "enum_pages_blocks_timeline_block_layout", + "schema": "public", + "values": [ + "vertical", + "alternating", + "horizontal" + ] + }, + "public.enum_pages_blocks_timeline_block_marker_style": { + "name": "enum_pages_blocks_timeline_block_marker_style", + "schema": "public", + "values": [ + "dot", + "number", + "icon", + "date" + ] + }, + "public.enum_pages_blocks_timeline_block_background_color": { + "name": "enum_pages_blocks_timeline_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark" + ] + }, + "public.enum_pages_blocks_divider_block_style": { + "name": "enum_pages_blocks_divider_block_style", + "schema": "public", + "values": [ + "line", + "space", + "dots" + ] + }, + "public.enum_pages_blocks_divider_block_spacing": { + "name": "enum_pages_blocks_divider_block_spacing", + "schema": "public", + "values": [ + "small", + "medium", + "large" + ] + }, + "public.enum_pages_blocks_video_block_aspect_ratio": { + "name": "enum_pages_blocks_video_block_aspect_ratio", + "schema": "public", + "values": [ + "16:9", + "4:3", + "1:1" + ] + }, + "public.enum_pages_blocks_posts_list_block_post_type": { + "name": "enum_pages_blocks_posts_list_block_post_type", + "schema": "public", + "values": [ + "blog", + "news", + "press", + "announcement", + "all" + ] + }, + "public.enum_pages_blocks_posts_list_block_layout": { + "name": "enum_pages_blocks_posts_list_block_layout", + "schema": "public", + "values": [ + "grid", + "list", + "featured", + "compact", + "masonry" + ] + }, + "public.enum_pages_blocks_posts_list_block_columns": { + "name": "enum_pages_blocks_posts_list_block_columns", + "schema": "public", + "values": [ + "2", + "3", + "4" + ] + }, + "public.enum_pages_blocks_posts_list_block_background_color": { + "name": "enum_pages_blocks_posts_list_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark" + ] + }, + "public.enum_pages_blocks_testimonials_block_layout": { + "name": "enum_pages_blocks_testimonials_block_layout", + "schema": "public", + "values": [ + "slider", + "grid", + "single", + "masonry", + "list" + ] + }, + "public.enum_pages_blocks_testimonials_block_columns": { + "name": "enum_pages_blocks_testimonials_block_columns", + "schema": "public", + "values": [ + "2", + "3", + "4" + ] + }, + "public.enum_pages_blocks_testimonials_block_display_mode": { + "name": "enum_pages_blocks_testimonials_block_display_mode", + "schema": "public", + "values": [ + "all", + "selected" + ] + }, + "public.enum_pages_blocks_testimonials_block_background_color": { + "name": "enum_pages_blocks_testimonials_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark", + "accent" + ] + }, + "public.enum_pages_blocks_newsletter_block_available_interests": { + "name": "enum_pages_blocks_newsletter_block_available_interests", + "schema": "public", + "values": [ + "general", + "blog", + "products", + "offers", + "events" + ] + }, + "public.enum_pages_blocks_newsletter_block_layout": { + "name": "enum_pages_blocks_newsletter_block_layout", + "schema": "public", + "values": [ + "inline", + "stacked", + "with-image", + "minimal", + "card" + ] + }, + "public.enum_pages_blocks_newsletter_block_image_position": { + "name": "enum_pages_blocks_newsletter_block_image_position", + "schema": "public", + "values": [ + "left", + "right" + ] + }, + "public.enum_pages_blocks_newsletter_block_background_color": { + "name": "enum_pages_blocks_newsletter_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark", + "accent" + ] + }, + "public.enum_pages_blocks_process_steps_block_layout": { + "name": "enum_pages_blocks_process_steps_block_layout", + "schema": "public", + "values": [ + "horizontal", + "vertical", + "alternating", + "connected", + "timeline" + ] + }, + "public.enum_pages_blocks_process_steps_block_cta_variant": { + "name": "enum_pages_blocks_process_steps_block_cta_variant", + "schema": "public", + "values": [ + "default", + "ghost", + "light" + ] + }, + "public.enum_pages_blocks_process_steps_block_background_color": { + "name": "enum_pages_blocks_process_steps_block_background_color", + "schema": "public", + "values": [ + "white", + "light", + "dark" + ] + }, + "public.enum_pages_status": { + "name": "enum_pages_status", + "schema": "public", + "values": [ + "draft", + "published" + ] + }, + "public.enum_posts_type": { + "name": "enum_posts_type", + "schema": "public", + "values": [ + "blog", + "news", + "press", + "announcement" + ] + }, + "public.enum_posts_status": { + "name": "enum_posts_status", + "schema": "public", + "values": [ + "draft", + "published", + "archived" + ] + }, + "public.enum_social_links_platform": { + "name": "enum_social_links_platform", + "schema": "public", + "values": [ + "facebook", + "x", + "instagram", + "youtube", + "linkedin", + "xing" + ] + }, + "public.enum_newsletter_subscribers_interests": { + "name": "enum_newsletter_subscribers_interests", + "schema": "public", + "values": [ + "general", + "blog", + "products", + "offers", + "events" + ] + }, + "public.enum_newsletter_subscribers_status": { + "name": "enum_newsletter_subscribers_status", + "schema": "public", + "values": [ + "pending", + "confirmed", + "unsubscribed", + "bounced" + ] + }, + "public.enum_portfolios_status": { + "name": "enum_portfolios_status", + "schema": "public", + "values": [ + "draft", + "published", + "archived" + ] + }, + "public.enum_cookie_configurations_enabled_categories": { + "name": "enum_cookie_configurations_enabled_categories", + "schema": "public", + "values": [ + "necessary", + "functional", + "analytics", + "marketing" + ] + }, + "public.enum_cookie_configurations_styling_position": { + "name": "enum_cookie_configurations_styling_position", + "schema": "public", + "values": [ + "bottom", + "top", + "middle" + ] + }, + "public.enum_cookie_configurations_styling_theme": { + "name": "enum_cookie_configurations_styling_theme", + "schema": "public", + "values": [ + "dark", + "light", + "auto" + ] + }, + "public.enum_cookie_inventory_category": { + "name": "enum_cookie_inventory_category", + "schema": "public", + "values": [ + "necessary", + "functional", + "analytics", + "marketing" + ] + }, + "public.enum_privacy_policy_settings_provider": { + "name": "enum_privacy_policy_settings_provider", + "schema": "public", + "values": [ + "alfright", + "internal" + ] + }, + "public.enum_privacy_policy_settings_alfright_language": { + "name": "enum_privacy_policy_settings_alfright_language", + "schema": "public", + "values": [ + "de-de", + "de-at", + "de-ch", + "en-gb", + "en-us" + ] + }, + "public.enum_email_logs_status": { + "name": "enum_email_logs_status", + "schema": "public", + "values": [ + "pending", + "sent", + "failed" + ] + }, + "public.enum_email_logs_source": { + "name": "enum_email_logs_source", + "schema": "public", + "values": [ + "manual", + "form", + "system", + "newsletter" + ] + }, + "public.enum_forms_confirmation_type": { + "name": "enum_forms_confirmation_type", + "schema": "public", + "values": [ + "message", + "redirect" + ] + }, + "public.enum_forms_redirect_type": { + "name": "enum_forms_redirect_type", + "schema": "public", + "values": [ + "reference", + "custom" + ] + }, + "public.enum_redirects_to_type": { + "name": "enum_redirects_to_type", + "schema": "public", + "values": [ + "reference", + "custom" + ] + }, + "public.enum_navigation_main_menu_submenu_link_type": { + "name": "enum_navigation_main_menu_submenu_link_type", + "schema": "public", + "values": [ + "page", + "custom" + ] + }, + "public.enum_navigation_main_menu_type": { + "name": "enum_navigation_main_menu_type", + "schema": "public", + "values": [ + "page", + "custom", + "submenu" + ] + }, + "public.enum_navigation_footer_menu_link_type": { + "name": "enum_navigation_footer_menu_link_type", + "schema": "public", + "values": [ + "page", + "custom" + ] + }, + "public.enum_seo_settings_social_profiles_platform": { + "name": "enum_seo_settings_social_profiles_platform", + "schema": "public", + "values": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "tiktok", + "pinterest", + "xing", + "other" + ] + }, + "public.enum_seo_settings_local_business_type": { + "name": "enum_seo_settings_local_business_type", + "schema": "public", + "values": [ + "LocalBusiness", + "Physician", + "Dentist", + "Attorney", + "Restaurant", + "Hotel", + "Store", + "HealthClub", + "HairSalon", + "AutoRepair", + "RealEstateAgent", + "FinancialService", + "ProfessionalService", + "MedicalBusiness" + ] + }, + "public.enum_seo_settings_local_business_price_range": { + "name": "enum_seo_settings_local_business_price_range", + "schema": "public", + "values": [ + "€", + "€€", + "€€€", + "€€€€" + ] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "id": "7851f70d-80e0-4b17-9430-e420fdf5a5e6", + "prevId": "00000000-0000-0000-0000-000000000000" +} \ No newline at end of file diff --git a/src/migrations/20251206_141403_email_logs_collection.ts b/src/migrations/20251206_141403_email_logs_collection.ts new file mode 100644 index 0000000..6fea836 --- /dev/null +++ b/src/migrations/20251206_141403_email_logs_collection.ts @@ -0,0 +1,41 @@ +import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres' + +export async function up({ db, payload, req }: MigrateUpArgs): Promise { + await db.execute(sql` + CREATE TYPE "public"."enum_email_logs_status" AS ENUM('pending', 'sent', 'failed'); + CREATE TYPE "public"."enum_email_logs_source" AS ENUM('manual', 'form', 'system', 'newsletter'); + CREATE TABLE "email_logs" ( + "id" serial PRIMARY KEY NOT NULL, + "tenant_id" integer NOT NULL, + "to" varchar NOT NULL, + "from" varchar NOT NULL, + "subject" varchar NOT NULL, + "status" "enum_email_logs_status" DEFAULT 'pending' NOT NULL, + "message_id" varchar, + "error" varchar, + "source" "enum_email_logs_source" DEFAULT 'manual' NOT NULL, + "metadata" jsonb, + "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL, + "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL + ); + + ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "email_logs_id" integer; + ALTER TABLE "email_logs" ADD CONSTRAINT "email_logs_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE set null ON UPDATE no action; + CREATE INDEX "email_logs_tenant_idx" ON "email_logs" USING btree ("tenant_id"); + CREATE INDEX "email_logs_updated_at_idx" ON "email_logs" USING btree ("updated_at"); + CREATE INDEX "email_logs_created_at_idx" ON "email_logs" USING btree ("created_at"); + ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_email_logs_fk" FOREIGN KEY ("email_logs_id") REFERENCES "public"."email_logs"("id") ON DELETE cascade ON UPDATE no action; + CREATE INDEX "payload_locked_documents_rels_email_logs_id_idx" ON "payload_locked_documents_rels" USING btree ("email_logs_id");`) +} + +export async function down({ db, payload, req }: MigrateDownArgs): Promise { + await db.execute(sql` + ALTER TABLE "email_logs" DISABLE ROW LEVEL SECURITY; + DROP TABLE "email_logs" CASCADE; + ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_email_logs_fk"; + + DROP INDEX "payload_locked_documents_rels_email_logs_id_idx"; + ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "email_logs_id"; + DROP TYPE "public"."enum_email_logs_status"; + DROP TYPE "public"."enum_email_logs_source";`) +} diff --git a/src/migrations/index.ts b/src/migrations/index.ts index 78019ce..2be1372 100644 --- a/src/migrations/index.ts +++ b/src/migrations/index.ts @@ -1,6 +1,8 @@ import * as migration_20251130_213501_initial_with_localization from './20251130_213501_initial_with_localization'; import * as migration_20251202_081830_add_is_super_admin_to_users from './20251202_081830_add_is_super_admin_to_users'; import * as migration_20251206_071552_portfolio_collections from './20251206_071552_portfolio_collections'; +import * as migration_20251206_134750_tenant_email_config from './20251206_134750_tenant_email_config'; +import * as migration_20251206_141403_email_logs_collection from './20251206_141403_email_logs_collection'; export const migrations = [ { @@ -16,6 +18,16 @@ export const migrations = [ { up: migration_20251206_071552_portfolio_collections.up, down: migration_20251206_071552_portfolio_collections.down, - name: '20251206_071552_portfolio_collections' + name: '20251206_071552_portfolio_collections', + }, + { + up: migration_20251206_134750_tenant_email_config.up, + down: migration_20251206_134750_tenant_email_config.down, + name: '20251206_134750_tenant_email_config', + }, + { + up: migration_20251206_141403_email_logs_collection.up, + down: migration_20251206_141403_email_logs_collection.down, + name: '20251206_141403_email_logs_collection' }, ]; diff --git a/src/payload-types.ts b/src/payload-types.ts index d98fa8a..ddea787 100644 --- a/src/payload-types.ts +++ b/src/payload-types.ts @@ -76,10 +76,13 @@ export interface Config { 'social-links': SocialLink; testimonials: Testimonial; 'newsletter-subscribers': NewsletterSubscriber; + 'portfolio-categories': PortfolioCategory; + portfolios: Portfolio; 'cookie-configurations': CookieConfiguration; 'cookie-inventory': CookieInventory; 'consent-logs': ConsentLog; 'privacy-policy-settings': PrivacyPolicySetting; + 'email-logs': EmailLog; forms: Form; 'form-submissions': FormSubmission; redirects: Redirect; @@ -99,10 +102,13 @@ export interface Config { 'social-links': SocialLinksSelect | SocialLinksSelect; testimonials: TestimonialsSelect | TestimonialsSelect; 'newsletter-subscribers': NewsletterSubscribersSelect | NewsletterSubscribersSelect; + 'portfolio-categories': PortfolioCategoriesSelect | PortfolioCategoriesSelect; + portfolios: PortfoliosSelect | PortfoliosSelect; 'cookie-configurations': CookieConfigurationsSelect | CookieConfigurationsSelect; 'cookie-inventory': CookieInventorySelect | CookieInventorySelect; 'consent-logs': ConsentLogsSelect | ConsentLogsSelect; 'privacy-policy-settings': PrivacyPolicySettingsSelect | PrivacyPolicySettingsSelect; + 'email-logs': EmailLogsSelect | EmailLogsSelect; forms: FormsSelect | FormsSelect; 'form-submissions': FormSubmissionsSelect | FormSubmissionsSelect; redirects: RedirectsSelect | RedirectsSelect; @@ -158,6 +164,10 @@ export interface UserAuthOperations { */ export interface User { id: number; + /** + * Super Admins haben Zugriff auf alle Tenants und können neue Tenants erstellen. + */ + isSuperAdmin?: boolean | null; tenants?: | { tenant: number | Tenant; @@ -196,6 +206,22 @@ export interface Tenant { id?: string | null; }[] | null; + /** + * SMTP-Einstellungen für diesen Tenant. Leer = globale Einstellungen. + */ + email?: { + fromAddress?: string | null; + fromName?: string | null; + replyTo?: string | null; + useCustomSmtp?: boolean | null; + smtp?: { + host?: string | null; + port?: number | null; + secure?: boolean | null; + user?: string | null; + pass?: string | null; + }; + }; updatedAt: string; createdAt: string; } @@ -767,6 +793,159 @@ export interface NewsletterSubscriber { updatedAt: string; createdAt: string; } +/** + * Kategorien für Portfolio-Galerien (z.B. Hochzeit, Portrait, Landschaft) + * + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "portfolio-categories". + */ +export interface PortfolioCategory { + id: number; + tenant?: (number | null) | Tenant; + /** + * z.B. "Hochzeitsfotografie", "Portraits", "Landschaften" + */ + name: string; + /** + * URL-freundlicher Name (z.B. "hochzeit", "portrait") + */ + slug: string; + /** + * Kurzbeschreibung der Kategorie für SEO und Übersichten + */ + description?: string | null; + /** + * Repräsentatives Bild für die Kategorieübersicht + */ + coverImage?: (number | null) | Media; + /** + * Niedrigere Zahlen erscheinen zuerst + */ + order?: number | null; + /** + * Inaktive Kategorien werden nicht angezeigt + */ + isActive?: boolean | null; + updatedAt: string; + createdAt: string; +} +/** + * Portfolio-Galerien mit Fotografien + * + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "portfolios". + */ +export interface Portfolio { + id: number; + tenant?: (number | null) | Tenant; + /** + * Name der Galerie / des Projekts + */ + title: string; + /** + * URL-freundlicher Name (z.B. "hochzeit-maria-thomas") + */ + slug: string; + /** + * Ausführliche Beschreibung des Projekts/Shootings + */ + description?: { + root: { + type: string; + children: { + type: any; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + /** + * Kurze Beschreibung für Übersichten und SEO (max. 300 Zeichen) + */ + excerpt?: string | null; + /** + * Hauptkategorie dieser Galerie + */ + category: number | PortfolioCategory; + /** + * Zusätzliche Schlagwörter für Filterung (z.B. "outdoor", "studio", "schwarz-weiß") + */ + tags?: string[] | null; + /** + * Hauptbild für Übersichten und Vorschauen + */ + coverImage: number | Media; + /** + * Alle Bilder dieser Galerie + */ + images: { + image: number | Media; + /** + * Optionale Beschreibung für dieses Bild + */ + caption?: string | null; + /** + * Als Highlight-Bild markieren + */ + isHighlight?: boolean | null; + id?: string | null; + }[]; + /** + * Zusätzliche Informationen zum Shooting + */ + projectDetails?: { + /** + * Name des Kunden (optional, für Referenzen) + */ + client?: string | null; + /** + * Wo wurde das Shooting durchgeführt? + */ + location?: string | null; + shootingDate?: string | null; + /** + * Kamera, Objektive etc. (optional) + */ + equipment?: string[] | null; + }; + /** + * Veröffentlichungsstatus + */ + status: 'draft' | 'published' | 'archived'; + /** + * Auf der Startseite anzeigen + */ + isFeatured?: boolean | null; + /** + * Wann soll die Galerie veröffentlicht werden? + */ + publishedAt?: string | null; + /** + * Für manuelle Sortierung (niedrigere Zahlen zuerst) + */ + order?: number | null; + seo?: { + /** + * Überschreibt den Standardtitel für Suchmaschinen + */ + metaTitle?: string | null; + /** + * Beschreibung für Suchmaschinen (max. 160 Zeichen) + */ + metaDescription?: string | null; + /** + * Bild für Social Media Shares (verwendet Cover-Bild wenn leer) + */ + ogImage?: (number | null) | Media; + }; + updatedAt: string; + createdAt: string; +} /** * Cookie-Banner Konfiguration pro Tenant * @@ -1012,6 +1191,40 @@ export interface PrivacyPolicySetting { updatedAt: string; createdAt: string; } +/** + * Protokoll aller gesendeten E-Mails + * + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "email-logs". + */ +export interface EmailLog { + id: number; + tenant: number | Tenant; + to: string; + from: string; + subject: string; + status: 'pending' | 'sent' | 'failed'; + /** + * SMTP Message-ID bei erfolgreichem Versand + */ + messageId?: string | null; + error?: string | null; + source: 'manual' | 'form' | 'system' | 'newsletter'; + /** + * Zusätzliche Kontextinformationen (z.B. Form-ID) + */ + metadata?: + | { + [k: string]: unknown; + } + | unknown[] + | string + | number + | boolean + | null; + updatedAt: string; + createdAt: string; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "forms". @@ -1268,6 +1481,14 @@ export interface PayloadLockedDocument { relationTo: 'newsletter-subscribers'; value: number | NewsletterSubscriber; } | null) + | ({ + relationTo: 'portfolio-categories'; + value: number | PortfolioCategory; + } | null) + | ({ + relationTo: 'portfolios'; + value: number | Portfolio; + } | null) | ({ relationTo: 'cookie-configurations'; value: number | CookieConfiguration; @@ -1284,6 +1505,10 @@ export interface PayloadLockedDocument { relationTo: 'privacy-policy-settings'; value: number | PrivacyPolicySetting; } | null) + | ({ + relationTo: 'email-logs'; + value: number | EmailLog; + } | null) | ({ relationTo: 'forms'; value: number | Form; @@ -1343,6 +1568,7 @@ export interface PayloadMigration { * via the `definition` "users_select". */ export interface UsersSelect { + isSuperAdmin?: T; tenants?: | T | { @@ -1505,6 +1731,23 @@ export interface TenantsSelect { domain?: T; id?: T; }; + email?: + | T + | { + fromAddress?: T; + fromName?: T; + replyTo?: T; + useCustomSmtp?: T; + smtp?: + | T + | { + host?: T; + port?: T; + secure?: T; + user?: T; + pass?: T; + }; + }; updatedAt?: T; createdAt?: T; } @@ -1870,6 +2113,64 @@ export interface NewsletterSubscribersSelect { updatedAt?: T; createdAt?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "portfolio-categories_select". + */ +export interface PortfolioCategoriesSelect { + tenant?: T; + name?: T; + slug?: T; + description?: T; + coverImage?: T; + order?: T; + isActive?: T; + updatedAt?: T; + createdAt?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "portfolios_select". + */ +export interface PortfoliosSelect { + tenant?: T; + title?: T; + slug?: T; + description?: T; + excerpt?: T; + category?: T; + tags?: T; + coverImage?: T; + images?: + | T + | { + image?: T; + caption?: T; + isHighlight?: T; + id?: T; + }; + projectDetails?: + | T + | { + client?: T; + location?: T; + shootingDate?: T; + equipment?: T; + }; + status?: T; + isFeatured?: T; + publishedAt?: T; + order?: T; + seo?: + | T + | { + metaTitle?: T; + metaDescription?: T; + ogImage?: T; + }; + updatedAt?: T; + createdAt?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "cookie-configurations_select". @@ -2003,6 +2304,23 @@ export interface PrivacyPolicySettingsSelect { updatedAt?: T; createdAt?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "email-logs_select". + */ +export interface EmailLogsSelect { + tenant?: T; + to?: T; + from?: T; + subject?: T; + status?: T; + messageId?: T; + error?: T; + source?: T; + metadata?: T; + updatedAt?: T; + createdAt?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "forms_select". diff --git a/src/payload.config.ts b/src/payload.config.ts index 5cc95e7..edbeddb 100644 --- a/src/payload.config.ts +++ b/src/payload.config.ts @@ -39,6 +39,15 @@ import { SiteSettings } from './globals/SiteSettings' import { Navigation } from './globals/Navigation' import { SEOSettings } from './globals/SEOSettings' +// Hooks +import { sendFormNotification } from './hooks/sendFormNotification' + +// Email +import { multiTenantEmailAdapter } from './lib/email/payload-email-adapter' + +// Email Logs +import { EmailLogs } from './collections/EmailLogs' + const filename = fileURLToPath(import.meta.url) const dirname = path.dirname(filename) @@ -47,6 +56,8 @@ export default buildConfig({ admin: { user: Users.slug, }, + // Multi-Tenant Email Adapter + email: multiTenantEmailAdapter, // Admin Panel Internationalization (UI translations) i18n: { supportedLanguages: { de, en }, @@ -105,6 +116,8 @@ export default buildConfig({ CookieInventory, ConsentLogs, PrivacyPolicySettings, + // System + EmailLogs, ], globals: [SiteSettings, Navigation, SEOSettings], editor: lexicalEditor(), @@ -175,6 +188,11 @@ export default buildConfig({ }, // Fix für TypeScript Types Generation - das Plugin braucht explizite relationTo Angaben redirectRelationships: ['pages'], + formSubmissionOverrides: { + hooks: { + afterChange: [sendFormNotification], + }, + }, }), redirectsPlugin({ collections: ['pages'], diff --git a/tests/int/email.int.spec.ts b/tests/int/email.int.spec.ts new file mode 100644 index 0000000..6bcb633 --- /dev/null +++ b/tests/int/email.int.spec.ts @@ -0,0 +1,139 @@ +import { describe, it, expect, beforeEach, vi } from 'vitest' +import type { Payload } from 'payload' +import type { Tenant } from '@/payload-types' + +const mockSendMail = vi.fn(async () => ({ messageId: 'mocked-id' })) +const mockCreateTransport = vi.fn(() => ({ sendMail: mockSendMail })) + +vi.mock('nodemailer', () => ({ + __esModule: true, + default: { + createTransport: (...args: unknown[]) => mockCreateTransport(...args), + }, +})) + +import { + sendTenantEmail, + invalidateTenantEmailCache, + invalidateGlobalEmailCache, +} from '@/lib/email/tenant-email-service' + +describe('tenant email service', () => { + let payload: Payload + let mockFindByID: ReturnType + + beforeEach(() => { + mockSendMail.mockClear() + mockCreateTransport.mockClear() + mockFindByID = vi.fn() + + payload = { + findByID: mockFindByID, + } as unknown as Payload + + process.env.SMTP_HOST = 'smtp.global.test' + process.env.SMTP_PORT = '587' + process.env.SMTP_SECURE = 'false' + process.env.SMTP_USER = 'global-user' + process.env.SMTP_PASS = 'global-pass' + process.env.SMTP_FROM_ADDRESS = 'noreply@example.com' + + invalidateGlobalEmailCache() + }) + + it('falls back to global SMTP configuration when tenant has no custom SMTP', async () => { + const tenant = { + id: 1, + slug: 'tenant-a', + name: 'Tenant A', + email: { + useCustomSmtp: false, + }, + } as Tenant + + mockFindByID.mockResolvedValue(tenant) + + const result = await sendTenantEmail(payload, tenant.id, { + to: 'user@example.com', + subject: 'Test', + text: 'Hello from test', + }) + + expect(result.success).toBe(true) + expect(mockCreateTransport).toHaveBeenCalledTimes(1) + expect(mockCreateTransport).toHaveBeenCalledWith({ + host: 'smtp.global.test', + port: 587, + secure: false, + auth: { + user: 'global-user', + pass: 'global-pass', + }, + }) + expect(mockSendMail).toHaveBeenCalledWith( + expect.objectContaining({ + from: '"Tenant A" ', + to: 'user@example.com', + }), + ) + }) + + it('uses cached tenant-specific transporter and re-creates it after invalidation', async () => { + const tenant = { + id: 42, + slug: 'tenant-b', + name: 'Tenant B', + email: { + useCustomSmtp: true, + fromAddress: 'info@tenant-b.de', + fromName: 'Tenant B', + smtp: { + host: 'smtp.tenant-b.de', + port: 465, + secure: true, + user: 'tenant-user', + pass: 'tenant-pass', + }, + }, + } as Tenant + + mockFindByID.mockResolvedValue(tenant) + + await sendTenantEmail(payload, tenant.id, { + to: 'recipient@example.com', + subject: 'Hi', + text: 'First email', + }) + + expect(mockCreateTransport).toHaveBeenCalledTimes(1) + expect(mockCreateTransport).toHaveBeenCalledWith({ + host: 'smtp.tenant-b.de', + port: 465, + secure: true, + auth: { + user: 'tenant-user', + pass: 'tenant-pass', + }, + }) + + mockCreateTransport.mockClear() + + await sendTenantEmail(payload, tenant.id, { + to: 'recipient@example.com', + subject: 'Hi again', + text: 'Second email', + }) + + expect(mockCreateTransport).not.toHaveBeenCalled() + + invalidateTenantEmailCache(tenant.id) + + await sendTenantEmail(payload, tenant.id, { + to: 'recipient@example.com', + subject: 'After invalidation', + text: 'Third email', + }) + + expect(mockCreateTransport).toHaveBeenCalledTimes(1) + }) +})