feat: improve CouchService change handling and enhance async processing
parent
a86cd8880f
commit
41f691f02e
|
@ -23,21 +23,23 @@ export class CouchService {
|
||||||
const nano = this.nanoInstance;
|
const nano = this.nanoInstance;
|
||||||
for (const database of DatabaseListen) {
|
for (const database of DatabaseListen) {
|
||||||
const db = nano.db.use(database);
|
const db = nano.db.use(database);
|
||||||
db.changesReader.start({ includeDocs: true }).on('change', (change) => {
|
db.changesReader
|
||||||
Logger.verbose(
|
.start({ includeDocs: true })
|
||||||
`Receive Data from ${database}: ${change?.id}`,
|
.on('change', async (change) => {
|
||||||
'CouchService',
|
Logger.verbose(
|
||||||
);
|
`Receive Data from ${database}: ${change?.id}`,
|
||||||
this.changeDoc(change, database);
|
'CouchService',
|
||||||
});
|
);
|
||||||
|
await this.changeDoc(change, database);
|
||||||
|
});
|
||||||
|
|
||||||
// transaction
|
// transaction
|
||||||
Logger.log(`start listen database ${database}`, 'CouchService');
|
Logger.log(`start listen database ${database}`, 'CouchService');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private changeDoc(data, database) {
|
private async changeDoc(data, database) {
|
||||||
this.eventBus.publish(
|
await this.eventBus.publish(
|
||||||
new ChangeDocEvent({
|
new ChangeDocEvent({
|
||||||
id: data.id,
|
id: data.id,
|
||||||
database: database,
|
database: database,
|
||||||
|
@ -111,8 +113,8 @@ export class CouchService {
|
||||||
const selector = {
|
const selector = {
|
||||||
created_at: {
|
created_at: {
|
||||||
$gte: todayTimestamp,
|
$gte: todayTimestamp,
|
||||||
status: 'settled',
|
|
||||||
},
|
},
|
||||||
|
status: 'settled',
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = await db.find({
|
const result = await db.find({
|
||||||
|
|
|
@ -42,10 +42,10 @@ export class PosTransactionHandler implements IEventHandler<ChangeDocEvent> {
|
||||||
try {
|
try {
|
||||||
const database = event.data.database;
|
const database = event.data.database;
|
||||||
const data = { ...event.data.data };
|
const data = { ...event.data.data };
|
||||||
Logger.log(`receipt data with code ${data?.code}`);
|
|
||||||
|
|
||||||
// jika bukan database transaksi, return langsung
|
// jika bukan database transaksi, return langsung
|
||||||
if (database != 'transaction') return;
|
if (database != 'transaction') return;
|
||||||
|
Logger.log(`receipt data with code ${data?.code}`);
|
||||||
|
|
||||||
const sales_formula = await this.formulaService.getOneByOptions({
|
const sales_formula = await this.formulaService.getOneByOptions({
|
||||||
where: {
|
where: {
|
||||||
|
|
Loading…
Reference in New Issue