refactor: let each store bring its own step for the shared-store import

This commit is contained in:
Linus Rath
2026-10-31 22:42:14 +01:00
parent 1b2d81be27
commit c20ecd4b1a
+14 -5
View File
@@ -2,12 +2,21 @@ import type { ImportSummary } from './boot';
/**
* Copy an existing single-instance install's local files into an
* uninitialised shared store (#1066). Every store adds its own step here;
* each step writes only what the store doesn't hold yet (put with
* ifVersion: null), so running it again changes nothing, and it never
* changes or deletes a local file.
* uninitialised shared store (#1066). Every store brings its own steps (in
* lib/shared-store/import/<part>.ts); each step reads that store's local
* files exactly as local mode would and writes only what the store doesn't
* hold yet (put with ifVersion: null), so running it again changes nothing.
* It never changes or deletes a local file. Returns how many items it wrote.
*/
export async function importLocalData(): Promise<ImportSummary> {
export interface ImportStep {
name: string;
run(): Promise<number>;
}
const STEPS: ImportStep[] = [];
export async function importLocalData(steps: ImportStep[] = STEPS): Promise<ImportSummary> {
const imported: Record<string, number> = {};
for (const step of steps) imported[step.name] = await step.run();
return { imported };
}