/// PocketBase migration: per-user app preferences (Home sections + Look ahead). /// /// 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 /// /// Depends on usersapp. migrate((app) => { const users = app.findCollectionByNameOrId("usersapp"); const ownerRules = { listRule: "user = @request.auth.id", viewRule: "user = @request.auth.id", createRule: "@request.auth.id != '' && user = @request.auth.id", updateRule: "user = @request.auth.id", deleteRule: "user = @request.auth.id", }; const appPrefs = new Collection({ type: "base", name: "app_prefs", ...ownerRules, fields: [ { type: "relation", name: "user", required: true, collectionId: users.id, cascadeDelete: true, maxSelect: 1, }, { type: "bool", name: "home_show_transactions", required: false, }, { type: "bool", name: "home_show_categorized", required: false, }, { type: "bool", name: "home_show_recent", required: false, }, { type: "number", name: "look_ahead_max_years", required: false, onlyInt: true, }, ], indexes: [ "CREATE UNIQUE INDEX idx_app_prefs_user ON app_prefs (user)", ], }); app.save(appPrefs); }, (app) => { try { const col = app.findCollectionByNameOrId("app_prefs"); app.delete(col); } catch (_) {} });