38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
|
// eslint-disable-next-line import/no-restricted-paths -- Needed to print log messages
|
||
|
import { LogService } from "../platform/abstractions/log.service";
|
||
|
// eslint-disable-next-line import/no-restricted-paths -- Needed to interface with storage locations
|
||
|
import { AbstractStorageService } from "../platform/abstractions/storage.service";
|
||
|
|
||
|
export class MigrationHelper {
|
||
|
constructor(
|
||
|
public currentVersion: number,
|
||
|
private storageService: AbstractStorageService,
|
||
|
public logService: LogService
|
||
|
) {}
|
||
|
|
||
|
get<T>(key: string): Promise<T> {
|
||
|
return this.storageService.get<T>(key);
|
||
|
}
|
||
|
|
||
|
set<T>(key: string, value: T): Promise<void> {
|
||
|
this.logService.info(`Setting ${key}`);
|
||
|
return this.storageService.save(key, value);
|
||
|
}
|
||
|
|
||
|
info(message: string): void {
|
||
|
this.logService.info(message);
|
||
|
}
|
||
|
|
||
|
async getAccounts<ExpectedAccountType>(): Promise<
|
||
|
{ userId: string; account: ExpectedAccountType }[]
|
||
|
> {
|
||
|
const userIds = (await this.get<string[]>("authenticatedAccounts")) ?? [];
|
||
|
return Promise.all(
|
||
|
userIds.map(async (userId) => ({
|
||
|
userId,
|
||
|
account: await this.get<ExpectedAccountType>(userId),
|
||
|
}))
|
||
|
);
|
||
|
}
|
||
|
}
|