/// PocketBase migration: budget / chart / icon fields on home_filter_widgets. migrate((app) => { const col = app.findCollectionByNameOrId("home_filter_widgets"); const addIfMissing = (config) => { if (col.fields.getByName(config.name)) return; col.fields.add(new Field(config)); }; addIfMissing({ type: "text", name: "widget_type", required: false, max: 40, }); addIfMissing({ type: "text", name: "icon_id", required: false, max: 40, }); addIfMissing({ type: "text", name: "chart_style", required: false, max: 40, }); addIfMissing({ type: "text", name: "budget_cap_mode", required: false, max: 40, }); addIfMissing({ type: "number", name: "budget_fixed_amount", required: false, }); addIfMissing({ type: "number", name: "budget_average_months", required: false, onlyInt: true, }); app.save(col); }, (app) => { try { const col = app.findCollectionByNameOrId("home_filter_widgets"); for (const name of [ "widget_type", "icon_id", "chart_style", "budget_cap_mode", "budget_fixed_amount", "budget_average_months", ]) { const field = col.fields.getByName(name); if (field) col.fields.removeById(field.id); } app.save(col); } catch (_) {} });