/// PocketBase migration: `updated_at` + `deleted` on overview favourites and /// home filter widgets for cross-device last-write-wins sync. /// /// Apply on the server: /// /// sudo cp this_file /opt/pocketbase/pb_migrations/ /// sudo chown pocketbase:pocketbase /opt/pocketbase/pb_migrations/*.js /// sudo -u pocketbase /opt/pocketbase/pocketbase migrate up /// sudo systemctl restart pocketbase migrate((app) => { function addSyncFields(collectionName) { const col = app.findCollectionByNameOrId(collectionName); let changed = false; if (!col.fields.getByName("updated_at")) { col.fields.add(new Field({ type: "number", name: "updated_at", required: false, })); changed = true; } if (!col.fields.getByName("deleted")) { col.fields.add(new Field({ type: "bool", name: "deleted", required: false, })); changed = true; } if (changed) app.save(col); } addSyncFields("overview_favourites"); addSyncFields("home_filter_widgets"); }, (app) => { function removeSyncFields(collectionName) { try { const col = app.findCollectionByNameOrId(collectionName); const updated = col.fields.getByName("updated_at"); if (updated) col.fields.removeById(updated.id); const deleted = col.fields.getByName("deleted"); if (deleted) col.fields.removeById(deleted.id); app.save(col); } catch (_) {} } removeSyncFields("overview_favourites"); removeSyncFields("home_filter_widgets"); });