From 8ff67a38f0a5543f0df4a9868a42189e86e0ec70 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 5 Aug 2024 15:00:04 +0200 Subject: [PATCH] Combine manga and category migration --- src/lib/data/Mangas.ts | 55 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/lib/data/Mangas.ts b/src/lib/data/Mangas.ts index d4d66f3a..91ad953c 100644 --- a/src/lib/data/Mangas.ts +++ b/src/lib/data/Mangas.ts @@ -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( mode: MigrateMode, mangaToMigrate: MangaToMigrate, @@ -469,15 +450,30 @@ export class Mangas { private static migrateManga( mode: MigrateMode, + mangaToMigrateFrom: MangaToMigrate, + mangaToMigrateTo: MangaToMigrateTo, + migrateCategories: boolean, removeMangaFromCategories: boolean, - mangaToMigrate: MangaToMigrate, ): MigrateFuncReturn { + if (!mangaToMigrateFrom?.categories) { + throw new Error('Categories are missing'); + } + return { - copy: () => [], + copy: () => [ + requestManager.updateManga(mangaToMigrateTo.id, { + updateManga: { inLibrary: true }, + updateMangaCategories: migrateCategories + ? { + addToCategories: mangaToMigrateFrom.categories?.nodes.map((category) => category.id), + } + : undefined, + }).response, + ], cleanup: () => mode === 'migrate' ? [ - requestManager.updateManga(mangaToMigrate.id, { + requestManager.updateManga(mangaToMigrateFrom.id, { updateManga: { inLibrary: false }, updateMangaCategories: removeMangaFromCategories ? { clearCategories: true } : undefined, }).response, @@ -549,15 +545,20 @@ export class Mangas { await performMigrationActions( [migrateChapters, Mangas.migrateChapters(mode, mangaToMigrateData.manga, mangaToMigrateToData)], - [ - migrateCategories, - Mangas.migrateCategories(mode, mangaToMigrateData.manga, mangaToMigrateToData.fetchManga.manga), - ], [ migrateTracking, 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, + ), + ], ); }); }