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.
23 lines
963 B
JavaScript
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)
|
|
})
|