From e146ecde70a7557d5fcb58cf0308e6dc3da16808 Mon Sep 17 00:00:00 2001 From: devlikepro Date: Thu, 16 Jan 2025 15:29:51 +0700 Subject: [PATCH] [core] Add local store to WAHA Core fix #741 --- .../engines/noweb/store/NowebStorageFactoryCore.ts | 12 +++++++++++- src/core/storage/LocalStoreCore.ts | 9 +++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/core/engines/noweb/store/NowebStorageFactoryCore.ts b/src/core/engines/noweb/store/NowebStorageFactoryCore.ts index bab8d9d2..faf76e2f 100644 --- a/src/core/engines/noweb/store/NowebStorageFactoryCore.ts +++ b/src/core/engines/noweb/store/NowebStorageFactoryCore.ts @@ -1,9 +1,19 @@ +import { LocalStore } from '@waha/core/storage/LocalStore'; + import { DataStore } from '../../../abc/DataStore'; import { INowebStorage } from './INowebStorage'; import { Sqlite3Storage } from './sqlite3/Sqlite3Storage'; export class NowebStorageFactoryCore { createStorage(store: DataStore, name: string): INowebStorage { - return new Sqlite3Storage(':memory:'); + if (store instanceof LocalStore) { + return this.buildStorageSqlite3(store, name); + } + throw new Error(`Unsupported store type '${store.constructor.name}'`); + } + + private buildStorageSqlite3(store: LocalStore, name: string) { + const filePath = store.getFilePath(name, 'store.sqlite3'); + return new Sqlite3Storage(filePath); } } diff --git a/src/core/storage/LocalStoreCore.ts b/src/core/storage/LocalStoreCore.ts index 84b3481e..e9db088c 100644 --- a/src/core/storage/LocalStoreCore.ts +++ b/src/core/storage/LocalStoreCore.ts @@ -9,10 +9,8 @@ import { LocalStore } from './LocalStore'; const Database = require('better-sqlite3'); export class LocalStoreCore extends LocalStore { - protected readonly baseDirectory: string = path.join( - os.tmpdir(), - 'waha-sessions', - ); + protected readonly baseDirectory: string = + process.env.WAHA_LOCAL_STORE_BASE_DIR || './.sessions'; private readonly engine: string; private db: any; @@ -54,8 +52,7 @@ export class LocalStoreCore extends LocalStore { } protected getDirectoryPath(name: string): string { - const suffix = crypto.createHash('md5').update(name).digest('hex'); - return path.join(this.getEngineDirectory(), `${name}-${suffix}`); + return path.join(this.getEngineDirectory(), name); } getWAHADatabase(): any {