Combine manga and category migration

This commit is contained in:
schroda
2024-08-05 15:00:04 +02:00
parent 4a01b1873c
commit 8ff67a38f0

View File

@@ -413,25 +413,6 @@ export class Mangas {
}; };
} }
private static migrateCategories(
mode: MigrateMode,
mangaToMigrate: MangaToMigrate,
mangaToMigrateTo: MangaToMigrateTo,
): MigrateFuncReturn {
if (!mangaToMigrate?.categories) {
throw new Error('Categories are missing');
}
return {
copy: () => [
requestManager.updateMangasCategories([mangaToMigrateTo.id], {
addToCategories: mangaToMigrate.categories?.nodes.map((category) => category.id),
}).response,
],
cleanup: () => [],
};
}
private static migrateTracking( private static migrateTracking(
mode: MigrateMode, mode: MigrateMode,
mangaToMigrate: MangaToMigrate, mangaToMigrate: MangaToMigrate,
@@ -469,15 +450,30 @@ export class Mangas {
private static migrateManga( private static migrateManga(
mode: MigrateMode, mode: MigrateMode,
mangaToMigrateFrom: MangaToMigrate,
mangaToMigrateTo: MangaToMigrateTo,
migrateCategories: boolean,
removeMangaFromCategories: boolean, removeMangaFromCategories: boolean,
mangaToMigrate: MangaToMigrate,
): MigrateFuncReturn { ): MigrateFuncReturn {
if (!mangaToMigrateFrom?.categories) {
throw new Error('Categories are missing');
}
return { return {
copy: () => [], copy: () => [
requestManager.updateManga(mangaToMigrateTo.id, {
updateManga: { inLibrary: true },
updateMangaCategories: migrateCategories
? {
addToCategories: mangaToMigrateFrom.categories?.nodes.map((category) => category.id),
}
: undefined,
}).response,
],
cleanup: () => cleanup: () =>
mode === 'migrate' mode === 'migrate'
? [ ? [
requestManager.updateManga(mangaToMigrate.id, { requestManager.updateManga(mangaToMigrateFrom.id, {
updateManga: { inLibrary: false }, updateManga: { inLibrary: false },
updateMangaCategories: removeMangaFromCategories ? { clearCategories: true } : undefined, updateMangaCategories: removeMangaFromCategories ? { clearCategories: true } : undefined,
}).response, }).response,
@@ -549,15 +545,20 @@ export class Mangas {
await performMigrationActions( await performMigrationActions(
[migrateChapters, Mangas.migrateChapters(mode, mangaToMigrateData.manga, mangaToMigrateToData)], [migrateChapters, Mangas.migrateChapters(mode, mangaToMigrateData.manga, mangaToMigrateToData)],
[
migrateCategories,
Mangas.migrateCategories(mode, mangaToMigrateData.manga, mangaToMigrateToData.fetchManga.manga),
],
[ [
migrateTracking, migrateTracking,
Mangas.migrateTracking(mode, mangaToMigrateData.manga, mangaToMigrateToData.fetchManga.manga), Mangas.migrateTracking(mode, mangaToMigrateData.manga, mangaToMigrateToData.fetchManga.manga),
], ],
[true, Mangas.migrateManga(mode, removeMangaFromCategories, mangaToMigrateData.manga)], [
true,
Mangas.migrateManga(
mode,
mangaToMigrateData.manga,
mangaToMigrateToData.fetchManga.manga,
!!migrateCategories,
removeMangaFromCategories,
),
],
); );
}); });
} }