49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
/// 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");
|
|
});
|