mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-11-02 00:14:23 +00:00
refactor: let each store bring its own step for the shared-store import
This commit is contained in:
@@ -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 };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user