From f1a31c815622ec62b90adb626dc70ce2e40e6427 Mon Sep 17 00:00:00 2001 From: Claus-Peter Huebner Date: Fri, 21 Jul 2023 19:49:07 +0200 Subject: [PATCH] add util class for async sending Tx to dlt-connector --- .../util/sendTransactionsToDltConnector.ts | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts diff --git a/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts b/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts new file mode 100644 index 000000000..1c338d564 --- /dev/null +++ b/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts @@ -0,0 +1,42 @@ +import { IsNull } from '@dbTools/typeorm' +import { DltTransaction } from '@entity/DltTransaction' + +import { DltConnectorClient } from '@/apis/DltConnectorClient' +import { backendLogger as logger } from '@/server/logger' + +export async function sendTransactionsToDltConnector(): Promise { + const dltConnector = DltConnectorClient.getInstance() + if (dltConnector) { + const dltTransactions = await DltTransaction.find({ + where: { messageId: IsNull() }, + relations: ['transaction'], + order: { createdAt: 'ASC', id: 'ASC' }, + }) + for (const dltTx of dltTransactions) { + logger.debug('sending dltTx=', dltTx) + if (dltTx.transaction && (dltTx.transaction ?? false)) { + try { + const messageId = await dltConnector.transmitTransaction(dltTx.transaction) + logger.debug('received messageId=', messageId) + const dltMessageId = Buffer.from(messageId, 'hex') + logger.debug('dltMessageId as Buffer=', dltMessageId) + if (dltMessageId.length !== 32) { + logger.error( + 'Error dlt message id is invalid: %s, should by 32 Bytes long in binary after converting from hex', + dltMessageId, + ) + return + } + dltTx.messageId = dltMessageId.toString() + await DltTransaction.save(dltTx) + logger.info('store messageId=%s in dltTx=%d', dltTx.messageId, dltTx.id) + } catch (e) { + logger.error( + `error while sending to dlt-connector or writing messageId of dltTx=${dltTx.id}`, + e, + ) + } + } + } + } +}