refactor: update each document individually during migrations

This commit is contained in:
Johannes Loher 2023-07-09 20:53:18 +02:00
parent e536a6fbda
commit 124824da83
No known key found for this signature in database
GPG key ID: 7CB0A9FB553DA045
10 changed files with 255 additions and 375 deletions

View file

@ -3,39 +3,33 @@
// SPDX-License-Identifier: MIT
import {
getActorUpdateDataGetter,
getCompendiumMigrator,
getSceneUpdateDataGetter,
migrateActors,
getSceneMigrator,
migrateCollection,
migrateCompendiums,
migrateItems,
migrateScenes,
} from "./migrationHelpers";
getCompendiumMigrator,
getActorMigrator,
} from "./migrationHelpers.js";
/** @type {import("./migration").Migration["migrate"]} */
/** @type {import("./migration.js").Migration["migrate"]} */
async function migrate() {
await migrateItems(getItemUpdateData);
await migrateActors(getActorUpdateData);
await migrateScenes(getSceneUpdateData);
await migrateCollection(game.items, migrateItem);
await migrateCollection(game.actors, migrateActor);
await migrateCollection(game.scenes, migrateScene);
await migrateCompendiums(migrateCompendium);
}
/** @type {import("./migrationHelpers").ItemUpdateDataGetter} */
function getItemUpdateData(itemData) {
if (itemData.type !== "spell") return;
return {
system: {
allowsDefense: false,
},
};
/** @type {import('./migrationHelpers.js').Migrator<Item>} */
async function migrateItem(item) {
if (item.type === "spell") {
await item.update({ system: { allowsDefense: false } });
}
}
const getActorUpdateData = getActorUpdateDataGetter(getItemUpdateData);
const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData);
const migrateCompendium = getCompendiumMigrator({ getItemUpdateData, getActorUpdateData, getSceneUpdateData });
const migrateActor = getActorMigrator(migrateItem);
const migrateScene = getSceneMigrator(migrateActor);
const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene });
/** @type {import("./migration").Migration} */
/** @type {import("./migration.js").Migration} */
export const migration = {
migrate,
migrateCompendium,