Locale Snapshot
Verhindert stillen Datenverlust lokalisierte Blöcke und Arrays in Payload CMS beim Speichern in einer Locale mit dem PostgreSQL-Adapter.
Installation
pnpm add payload-locale-snapshot Über
Payload CMS 3.x mit dem PostgreSQL-Adapter hat einen destruktiven Edge Case. Beim Speichern eines Dokuments in einer Locale führt der Drizzle-Adapter ein kaskadierendes `DELETE` auf Block- und Array-Tabellen aus, gefiltert nur nach `_parent_id` ohne `_locale`-Filter. PostgreSQL entfernt daraufhin alle übersetzten Blöcke, verschachtelten Arrays und Sub-Items aller anderen Sprachen. Payload fügt danach nur die Zeilen der aktiven Locale neu ein. Der Datenverlust geschieht lautlos. `localeSnapshot` schließt diese Lücke. Das Plugin bindet sich in die `beforeChange`- und `afterChange`-Lifecycle-Hooks ein. Vor dem Speichern führt es parametrisiertes SQL aus, um alle Block-, Array- und Child-Zeilen nicht-aktiver Locales in `req._localeSnapshot` zu sichern. Die Fremdschlüssel-Hierarchie wird in topologischer Reihenfolge durchlaufen, sodass Eltern vor Kindern erfasst werden. Nach dem Commit stellt das Plugin diese Zeilen innerhalb einer dedizierten `BEGIN ... COMMIT`-Transaktion mit `ON CONFLICT ("id") DO NOTHING` wieder her. Ein PostgreSQL-Advisory-Lock wird in einem `finally`-Block freigegeben. Relevante Tabellen werden automatisch aus Fremdschlüssel-Constraints ermittelt und mit TTL-Cache zwischengespeichert, sodass Collection-Slugs nicht hartcodiert werden müssen. Die Konfiguration erfolgt als einzelner Plugin-Eintrag in `payload.config.ts`. Sie können konkrete `collections` und `globals` festlegen oder das Plugin automatisch alle Collections mit lokalisierten Blöcken oder Arrays erkennen lassen. Weitere Optionen sind `failOnError` (bricht das Speichern bei Snapshot-Fehler ab), `maxDepth` für die Hierarchie-Traversierung, `schemaCacheTTL`, `lockTimeoutMs` und `serverless` für Runtimes wie AWS Lambda oder Vercel, wo `setImmediate` eingefroren sein kann. Das Plugin unterstützt Integer-, Serial-, Text- und UUID-Primärschlüssel und nutzt den Connection-Pool von Payload. Es setzt Payload `^3.0.0` mit `@payloadcms/db-postgres` und PostgreSQL 14 oder neuer voraus und hat keine Auswirkung auf MongoDB- oder SQLite-Setups. Bricht die Datenbankverbindung während der Wiederherstellung ab, schreibt das Plugin einen dauerhaften JSON-Dump unter `.locale-snapshot-recovery/`, der mit der exportierten Funktion `restoreFromRecoveryDump()` erneut abgespielt werden kann. `resetSchemaCache()` invalidiert den Schema-Hierarchie-Cache, nachdem Migrationen neue Block-Typen hinzugefügt haben.
Paketinformationen
- Paketname
payload-locale-snapshot- Neueste Version
0.3.0- Entpackte Größe
- 165 kB
- Lizenz
- MIT
- Wöchentliche Downloads
- 51
- Zuletzt veröffentlicht
- 4. Okt. 2026
Ähnliche Plugins
Mehr in i18nAuto Translate (LibreTranslate)
Übersetzt Payload-Dokumente im Hintergrund über einen selbst gehosteten LibreTranslate-Server in weitere Locales.
Dictionary (Database Translations)
Verwaltet UI-Texte als lokalisierte Payload-Collection, die Next.js über einen gecachten Helper ausliest.
Translator
Uebersetzt lokalisierte Payload CMS Inhalte ueber steckbare Provider, mit Steuerelementen auf Dokument-, Sammlungs- und Feldebene im Admin-Panel.
Translator
Übersetzt lokalisierte Felder in Payload-Collections und Globals per KI in andere Locales, als Entwurf wo Versionen aktiv sind.
Multilang
Übersetzungsmodell für Payload CMS, bei dem jede Sprachversion ein eigenes Dokument ist.
Translations
Verwalte UI-Übersetzungen in Payload CMS mit automatischer String-Sammlung.