From 0ce4c01c4804530fd856f4c4852688f4946d3954 Mon Sep 17 00:00:00 2001 From: devlikepro Date: Thu, 22 Jan 2026 11:28:58 +0700 Subject: [PATCH] [core] Optimize get config --- src/core/storage/ISessionConfigRepository.ts | 4 ++++ .../storage/LocalSessionConfigRepository.ts | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/core/storage/ISessionConfigRepository.ts b/src/core/storage/ISessionConfigRepository.ts index bb5e47fe..e415f10f 100644 --- a/src/core/storage/ISessionConfigRepository.ts +++ b/src/core/storage/ISessionConfigRepository.ts @@ -8,6 +8,10 @@ export abstract class ISessionConfigRepository { abstract getConfig(sessionName: string): Promise; + abstract getConfigBySessions( + sessionNames: string[], + ): Promise>; + abstract exists(sessionName: string): Promise; abstract deleteConfig(sessionName: string): Promise; diff --git a/src/core/storage/LocalSessionConfigRepository.ts b/src/core/storage/LocalSessionConfigRepository.ts index b17df7d6..1fe95dc7 100644 --- a/src/core/storage/LocalSessionConfigRepository.ts +++ b/src/core/storage/LocalSessionConfigRepository.ts @@ -48,6 +48,26 @@ export class LocalSessionConfigRepository extends ISessionConfigRepository { return JSON.parse(content); } + async getConfigBySessions( + sessionNames: string[], + ): Promise> { + const result = new Map(); + const uniqueNames = Array.from(new Set(sessionNames)); + if (uniqueNames.length === 0) { + return result; + } + const items = await Promise.all( + uniqueNames.map(async (sessionName) => ({ + sessionName, + config: await this.getConfig(sessionName), + })), + ); + for (const item of items) { + result.set(item.sessionName, item.config ?? null); + } + return result; + } + async saveConfig(sessionName: string, config: SessionConfig) { // Create a folder if not exist const folder = this.store.getSessionDirectory(sessionName);