From 41f691f02ea6300ec8a178bcdd38a93823c988d3 Mon Sep 17 00:00:00 2001 From: shancheas Date: Thu, 10 Jul 2025 18:36:09 +0700 Subject: [PATCH] feat: improve CouchService change handling and enhance async processing --- .../couch/data/services/couch.service.ts | 22 ++++++++++--------- .../handlers/pos-transaction.handler.ts | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/modules/configuration/couch/data/services/couch.service.ts b/src/modules/configuration/couch/data/services/couch.service.ts index 985c9f4..97c5991 100644 --- a/src/modules/configuration/couch/data/services/couch.service.ts +++ b/src/modules/configuration/couch/data/services/couch.service.ts @@ -23,21 +23,23 @@ export class CouchService { const nano = this.nanoInstance; for (const database of DatabaseListen) { const db = nano.db.use(database); - db.changesReader.start({ includeDocs: true }).on('change', (change) => { - Logger.verbose( - `Receive Data from ${database}: ${change?.id}`, - 'CouchService', - ); - this.changeDoc(change, database); - }); + db.changesReader + .start({ includeDocs: true }) + .on('change', async (change) => { + Logger.verbose( + `Receive Data from ${database}: ${change?.id}`, + 'CouchService', + ); + await this.changeDoc(change, database); + }); // transaction Logger.log(`start listen database ${database}`, 'CouchService'); } } - private changeDoc(data, database) { - this.eventBus.publish( + private async changeDoc(data, database) { + await this.eventBus.publish( new ChangeDocEvent({ id: data.id, database: database, @@ -111,8 +113,8 @@ export class CouchService { const selector = { created_at: { $gte: todayTimestamp, - status: 'settled', }, + status: 'settled', }; const result = await db.find({ diff --git a/src/modules/transaction/transaction/domain/usecases/handlers/pos-transaction.handler.ts b/src/modules/transaction/transaction/domain/usecases/handlers/pos-transaction.handler.ts index 1ae9744..ec52e38 100644 --- a/src/modules/transaction/transaction/domain/usecases/handlers/pos-transaction.handler.ts +++ b/src/modules/transaction/transaction/domain/usecases/handlers/pos-transaction.handler.ts @@ -42,10 +42,10 @@ export class PosTransactionHandler implements IEventHandler { try { const database = event.data.database; const data = { ...event.data.data }; - Logger.log(`receipt data with code ${data?.code}`); // jika bukan database transaksi, return langsung if (database != 'transaction') return; + Logger.log(`receipt data with code ${data?.code}`); const sales_formula = await this.formulaService.getOneByOptions({ where: {