From 7f75835ec2a4dc732d5210bf67232659f7580331 Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Fri, 1 Dec 2023 11:18:57 -0300 Subject: [PATCH 1/8] refactor: convert to typescript --- .../server/apps/storage/AppRealLogStorage.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts diff --git a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts new file mode 100644 index 0000000000000..8e27108c5344d --- /dev/null +++ b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts @@ -0,0 +1,33 @@ +import { AppConsole } from '@rocket.chat/apps-engine/server/logging'; +import type { ILoggerStorageEntry } from '@rocket.chat/apps-engine/server/logging'; +import { AppLogStorage } from '@rocket.chat/apps-engine/server/storage'; +import { InstanceStatus } from '@rocket.chat/instance-status'; +import type { AppLogs } from '@rocket.chat/models'; + +export class AppRealLogStorage extends AppLogStorage { + constructor(private db: typeof AppLogs) { + super('mongodb'); + } + + async find(...args: any): Promise { + return this.db.find(...args).toArray(); + } + + async storeEntries(appId: string, logger: AppConsole): Promise { + const item = AppConsole.toStorageEntry(appId, logger); + + item.instanceId = InstanceStatus.id(); + + const id = (await this.db.insertOne(item)).insertedId; + + return this.db.findOneById(id); + } + + async getEntriesFor(appId: string): Promise { + return this.db.find({ appId }).toArray(); + } + + async removeEntriesFor(appId: string): Promise { + await this.db.remove({ appId }); + } +} From 01cb9733a5a3a903657062042a3bd97bc5222214 Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Fri, 1 Dec 2023 11:19:56 -0300 Subject: [PATCH 2/8] feat: change storeEntries to receive logEntries instead appconsole instance --- apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts | 9 +++------ apps/meteor/ee/server/apps/storage/index.js | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts index 8e27108c5344d..c49ae57124138 100644 --- a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts +++ b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts @@ -1,4 +1,3 @@ -import { AppConsole } from '@rocket.chat/apps-engine/server/logging'; import type { ILoggerStorageEntry } from '@rocket.chat/apps-engine/server/logging'; import { AppLogStorage } from '@rocket.chat/apps-engine/server/storage'; import { InstanceStatus } from '@rocket.chat/instance-status'; @@ -13,12 +12,10 @@ export class AppRealLogStorage extends AppLogStorage { return this.db.find(...args).toArray(); } - async storeEntries(appId: string, logger: AppConsole): Promise { - const item = AppConsole.toStorageEntry(appId, logger); + async storeEntries(logEntry: ILoggerStorageEntry): Promise { + logEntry.instanceId = InstanceStatus.id(); - item.instanceId = InstanceStatus.id(); - - const id = (await this.db.insertOne(item)).insertedId; + const id = (await this.db.insertOne(logEntry)).insertedId; return this.db.findOneById(id); } diff --git a/apps/meteor/ee/server/apps/storage/index.js b/apps/meteor/ee/server/apps/storage/index.js index 7f8d90715a963..7b8d2f5af96e0 100644 --- a/apps/meteor/ee/server/apps/storage/index.js +++ b/apps/meteor/ee/server/apps/storage/index.js @@ -1,6 +1,6 @@ import './AppFileSystemSourceStorage'; import './AppGridFSSourceStorage'; -export { AppRealLogsStorage } from './logs-storage'; +export { AppRealLogStorage } from './AppRealLogStorage'; export { AppRealStorage } from './AppRealStorage'; export { ConfigurableAppSourceStorage } from './ConfigurableAppSourceStorage'; From a1ac92d4e36c94f4ae9bab4a6449defd59c9b88f Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Fri, 1 Dec 2023 11:28:45 -0300 Subject: [PATCH 3/8] refactor: remove `logs-storage.js` --- .../ee/server/apps/storage/logs-storage.js | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 apps/meteor/ee/server/apps/storage/logs-storage.js diff --git a/apps/meteor/ee/server/apps/storage/logs-storage.js b/apps/meteor/ee/server/apps/storage/logs-storage.js deleted file mode 100644 index b48599ca2d385..0000000000000 --- a/apps/meteor/ee/server/apps/storage/logs-storage.js +++ /dev/null @@ -1,32 +0,0 @@ -import { AppConsole } from '@rocket.chat/apps-engine/server/logging'; -import { AppLogStorage } from '@rocket.chat/apps-engine/server/storage'; -import { InstanceStatus } from '@rocket.chat/instance-status'; - -export class AppRealLogsStorage extends AppLogStorage { - constructor(model) { - super('mongodb'); - this.db = model; - } - - async find(...args) { - return this.db.find(...args).toArray(); - } - - async storeEntries(appId, logger) { - const item = AppConsole.toStorageEntry(appId, logger); - - item.instanceId = InstanceStatus.id(); - - const id = (await this.db.insertOne(item)).insertedId; - - return this.db.findOneById(id); - } - - async getEntriesFor(appId) { - return this.db.find({ appId }).toArray(); - } - - async removeEntriesFor(appId) { - await this.db.remove({ appId }); - } -} From 73aa008b56efeca344c26a5203c0f8c8f63e9abb Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Fri, 1 Dec 2023 11:30:05 -0300 Subject: [PATCH 4/8] refactor: remove type `any` --- .../meteor/ee/server/apps/storage/AppRealLogStorage.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts index c49ae57124138..d14bfb16bbbdd 100644 --- a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts +++ b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts @@ -1,4 +1,5 @@ import type { ILoggerStorageEntry } from '@rocket.chat/apps-engine/server/logging'; +import type { IAppLogStorageFindOptions } from '@rocket.chat/apps-engine/server/storage'; import { AppLogStorage } from '@rocket.chat/apps-engine/server/storage'; import { InstanceStatus } from '@rocket.chat/instance-status'; import type { AppLogs } from '@rocket.chat/models'; @@ -8,8 +9,13 @@ export class AppRealLogStorage extends AppLogStorage { super('mongodb'); } - async find(...args: any): Promise { - return this.db.find(...args).toArray(); + async find( + query: { + [field: string]: any; + }, + options?: IAppLogStorageFindOptions, + ): Promise { + return this.db.find(query, options).toArray(); } async storeEntries(logEntry: ILoggerStorageEntry): Promise { From fa15b90c18b570d8ae81bc0bdc85181e511ab26d Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Fri, 8 Dec 2023 11:05:20 -0300 Subject: [PATCH 5/8] fix: type errors --- apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts | 2 +- packages/model-typings/src/models/IAppLogsModel.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts index d14bfb16bbbdd..dbcfb53c607da 100644 --- a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts +++ b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts @@ -15,7 +15,7 @@ export class AppRealLogStorage extends AppLogStorage { }, options?: IAppLogStorageFindOptions, ): Promise { - return this.db.find(query, options).toArray(); + return this.db.find({ ...options, ...query }).toArray(); } async storeEntries(logEntry: ILoggerStorageEntry): Promise { diff --git a/packages/model-typings/src/models/IAppLogsModel.ts b/packages/model-typings/src/models/IAppLogsModel.ts index f73964c576875..6a6bc765cd8ed 100644 --- a/packages/model-typings/src/models/IAppLogsModel.ts +++ b/packages/model-typings/src/models/IAppLogsModel.ts @@ -1,6 +1,9 @@ +import type { DeleteResult, Filter } from 'mongodb'; + import type { IBaseModel } from './IBaseModel'; // TODO: type for AppLogs export interface IAppLogsModel extends IBaseModel { resetTTLIndex(expireAfterSeconds: number): Promise; + remove(query: Filter): Promise; } From b70c6001195f227c0e9fc5f2ec20b6d994fb33df Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Mon, 8 Jan 2024 15:41:31 -0300 Subject: [PATCH 6/8] fix: implement correct method --- apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts index dbcfb53c607da..90cfa0a5e5663 100644 --- a/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts +++ b/apps/meteor/ee/server/apps/storage/AppRealLogStorage.ts @@ -31,6 +31,6 @@ export class AppRealLogStorage extends AppLogStorage { } async removeEntriesFor(appId: string): Promise { - await this.db.remove({ appId }); + await this.db.deleteOne({ appId }); } } From 5a139b2e80e297e1e74f79b77972f69908bee589 Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Mon, 8 Jan 2024 16:39:06 -0300 Subject: [PATCH 7/8] chore: use apps engine with deno vm --- apps/meteor/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 2db6125659170..1d0831c129326 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -224,7 +224,7 @@ "@rocket.chat/account-utils": "workspace:^", "@rocket.chat/agenda": "workspace:^", "@rocket.chat/api-client": "workspace:^", - "@rocket.chat/apps-engine": "1.41.0", + "@rocket.chat/apps-engine": "deno", "@rocket.chat/base64": "workspace:^", "@rocket.chat/cas-validate": "workspace:^", "@rocket.chat/core-services": "workspace:^", From 714c879edfc4a10701f6a0d69f0957eba0d0b847 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Thu, 11 Jan 2024 17:04:51 -0300 Subject: [PATCH 8/8] Fix import --- apps/meteor/ee/server/apps/orchestrator.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/meteor/ee/server/apps/orchestrator.js b/apps/meteor/ee/server/apps/orchestrator.js index 0c128867efd9a..94936204547b4 100644 --- a/apps/meteor/ee/server/apps/orchestrator.js +++ b/apps/meteor/ee/server/apps/orchestrator.js @@ -21,7 +21,7 @@ import { AppThreadsConverter } from '../../../app/apps/server/converters/threads import { settings, settingsRegistry } from '../../../app/settings/server'; import { canEnableApp } from '../../app/license/server/canEnableApp'; import { AppServerNotifier, AppsRestApi, AppUIKitInteractionApi } from './communication'; -import { AppRealLogsStorage, AppRealStorage, ConfigurableAppSourceStorage } from './storage'; +import { AppRealLogStorage, AppRealStorage, ConfigurableAppSourceStorage } from './storage'; function isTesting() { return process.env.TEST_MODE === 'true'; @@ -54,7 +54,7 @@ export class AppServerOrchestrator { this._logModel = AppLogs; this._persistModel = AppsPersistence; this._storage = new AppRealStorage(this._model); - this._logStorage = new AppRealLogsStorage(this._logModel); + this._logStorage = new AppRealLogStorage(this._logModel); this._appSourceStorage = new ConfigurableAppSourceStorage(appsSourceStorageType, appsSourceStorageFilesystemPath); this._converters = new Map();