Add bulk migration

This commit is contained in:
schroda
2026-03-13 22:41:28 +01:00
parent c4c2a616f6
commit f6302fe3aa
75 changed files with 4207 additions and 669 deletions

View File

@@ -8,7 +8,8 @@
import type { MessageDescriptor } from '@lingui/core';
import { msg } from '@lingui/core/macro';
import { SortBy, SortOrder } from '@/features/migration/Migration.types.ts';
import { MigrationEntryStatus, MigrationPhase, SortBy, SortOrder } from '@/features/migration/Migration.types.ts';
import type { MigrationState } from '@/features/migration/Migration.types.ts';
export const sortByToTranslation: Record<SortBy, MessageDescriptor> = {
[SortBy.SOURCE_NAME]: msg`By source name`,
@@ -24,3 +25,70 @@ export const DEFAULT_SORT_SETTINGS = {
sortBy: SortBy.SOURCE_NAME,
sortOrder: SortOrder.ASC,
};
export const MIGRATION_LOCAL_STORAGE_KEY = 'migration_state';
export const MAX_MANGAS_IN_PARALLEL = 5;
export const MAX_SOURCES_IN_PARALLEL = 6;
export const DEFAULT_MIGRATION_STATE: MigrationState = {
phase: MigrationPhase.IDLE,
sourceId: null,
entries: {},
destinationSourceIds: [],
migrateOptions: null,
searchProgress: { total: 0, completed: 0, success: 0, failed: 0 },
migrationProgress: { total: 0, completed: 0, success: 0, failed: 0 },
startedAt: null,
lastUpdatedAt: null,
groupExpandState: {},
};
export const ENTRY_STATUS_TRANSLATION: Record<MigrationEntryStatus, MessageDescriptor> = {
[MigrationEntryStatus.PENDING]: msg`Pending…`,
[MigrationEntryStatus.SEARCHING]: msg`Searching…`,
[MigrationEntryStatus.SEARCH_COMPLETE]: msg`Match found`,
[MigrationEntryStatus.SEARCH_FAILED]: msg`Search failed`,
[MigrationEntryStatus.NO_MATCH]: msg`No match found`,
[MigrationEntryStatus.MIGRATING]: msg`Migrating…`,
[MigrationEntryStatus.MIGRATION_COMPLETE]: msg`Successfully migrated`,
[MigrationEntryStatus.MIGRATION_FAILED]: msg`Migration failed`,
[MigrationEntryStatus.EXCLUDED]: msg`Excluded`,
};
export const MIGRATE_SEARCH_ENTRY_GROUPS = [
MigrationEntryStatus.SEARCHING,
MigrationEntryStatus.SEARCH_FAILED,
MigrationEntryStatus.NO_MATCH,
MigrationEntryStatus.SEARCH_COMPLETE,
] as const satisfies readonly MigrationEntryStatus[];
export const MIGRATE_SEARCH_ENTRY_GROUP_EXPAND_DEFAULT_STATE: Record<
(typeof MIGRATE_SEARCH_ENTRY_GROUPS)[number],
boolean
> = {
[MigrationEntryStatus.SEARCHING]: true,
[MigrationEntryStatus.SEARCH_FAILED]: false,
[MigrationEntryStatus.NO_MATCH]: false,
[MigrationEntryStatus.SEARCH_COMPLETE]: false,
};
export const MIGRATE_EXECUTE_ENTRY_GROUPS = [
MigrationEntryStatus.MIGRATING,
MigrationEntryStatus.MIGRATION_FAILED,
MigrationEntryStatus.NO_MATCH,
MigrationEntryStatus.EXCLUDED,
MigrationEntryStatus.MIGRATION_COMPLETE,
] as const satisfies readonly MigrationEntryStatus[];
export const MIGRATE_EXECUTE_ENTRY_GROUP_EXPAND_DEFAULT_STATE: Record<
(typeof MIGRATE_EXECUTE_ENTRY_GROUPS)[number],
boolean
> = {
[MigrationEntryStatus.MIGRATING]: true,
[MigrationEntryStatus.MIGRATION_FAILED]: false,
[MigrationEntryStatus.NO_MATCH]: false,
[MigrationEntryStatus.EXCLUDED]: false,
[MigrationEntryStatus.MIGRATION_COMPLETE]: false,
};