stammtisch-hersbruck/backend/pb_migrations/1754500200_trail_flags_delete_rule.js
Daniel Michelberger 55f25fae0c fix: verwaiste trail_markers beim Löschen von trail_flags verhindern
trail_markers.flag ist required, hatte aber cascadeDelete: false — beim
Löschen eines Flag-Typs blieben Marker mit toter Referenz zurück. Die
deleteRule von trail_flags verbietet das Löschen jetzt, solange noch
Marker den Typ referenzieren.

1754500000_created_trails.js wurde direkt angepasst, damit ein Neuaufbau
der DB die Regel von Anfang an enthält. Da die Migration lokal bereits
angewendet war, trägt 1754500200_trail_flags_delete_rule.js dieselbe
Änderung für bestehende Instanzen nach. Snapshot in
1754400000_init_schema.js entsprechend aktualisiert.
2026-08-06 17:08:40 +02:00

23 lines
963 B
JavaScript

/// <reference path="../pb_data/types.d.ts" />
// trail_flags.deleteRule ergänzt: Löschen nur, solange kein Marker diesen
// Typ verwendet — sonst bliebe ein Pflichtfeld (trail_markers.flag) zurück,
// das ins Leere zeigt. Separate Migration, weil 1754500000_created_trails.js
// bereits angewendet wurde und PocketBase Migrationsdateien nur einmal
// anhand des Dateinamens ausführt, unabhängig vom Inhalt.
migrate((app) => {
const flags = app.findCollectionByNameOrId('trail_flags')
const adminOnly =
'team.owner.id ?= @request.auth.id' +
' || team.admins.id ?= @request.auth.id'
flags.deleteRule = adminOnly + ' && @collection.trail_markers.flag ?!= id'
app.save(flags)
}, (app) => {
const flags = app.findCollectionByNameOrId('trail_flags')
const adminOnly =
'team.owner.id ?= @request.auth.id' +
' || team.admins.id ?= @request.auth.id'
flags.deleteRule = adminOnly
app.save(flags)
})