From 3b6240de1f5867592caeaed252a8232ccab4c7b4 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Thu, 28 Dec 2023 19:24:01 +0100 Subject: [PATCH] split DltConnectorClient into multiple files similar to gms client --- backend/jest.config.js | 1 + .../DltConnectorClient.test.ts | 0 .../{ => dltConnector}/DltConnectorClient.ts | 51 ++----------------- .../dltConnector/enum/TransactionErrorType.ts | 14 +++++ .../apis/dltConnector/enum/TransactionType.ts | 11 ++++ .../dltConnector/model/TransactionError.ts | 7 +++ .../dltConnector/model/TransactionRecipe.ts | 8 +++ .../dltConnector/model/TransactionResult.ts | 8 +++ .../apis/dltConnector/model/UserIdentifier.ts | 5 ++ .../sendTransactionsToDltConnector.test.ts | 12 ++--- .../util/sendTransactionsToDltConnector.ts | 4 +- backend/tsconfig.json | 1 + .../CreateTransationRecipe.context.ts | 8 ++- 13 files changed, 73 insertions(+), 57 deletions(-) rename backend/src/apis/{ => dltConnector}/DltConnectorClient.test.ts (100%) rename backend/src/apis/{ => dltConnector}/DltConnectorClient.ts (87%) create mode 100644 backend/src/apis/dltConnector/enum/TransactionErrorType.ts create mode 100644 backend/src/apis/dltConnector/enum/TransactionType.ts create mode 100644 backend/src/apis/dltConnector/model/TransactionError.ts create mode 100644 backend/src/apis/dltConnector/model/TransactionRecipe.ts create mode 100644 backend/src/apis/dltConnector/model/TransactionResult.ts create mode 100644 backend/src/apis/dltConnector/model/UserIdentifier.ts diff --git a/backend/jest.config.js b/backend/jest.config.js index 625dca00f..32606c382 100644 --- a/backend/jest.config.js +++ b/backend/jest.config.js @@ -16,6 +16,7 @@ module.exports = { moduleNameMapper: { '@/(.*)': '/src/$1', '@arg/(.*)': '/src/graphql/arg/$1', + '@dltConnector/(.*)': '/src/apis/dltConnector/$1', '@enum/(.*)': '/src/graphql/enum/$1', '@model/(.*)': '/src/graphql/model/$1', '@union/(.*)': '/src/graphql/union/$1', diff --git a/backend/src/apis/DltConnectorClient.test.ts b/backend/src/apis/dltConnector/DltConnectorClient.test.ts similarity index 100% rename from backend/src/apis/DltConnectorClient.test.ts rename to backend/src/apis/dltConnector/DltConnectorClient.test.ts diff --git a/backend/src/apis/DltConnectorClient.ts b/backend/src/apis/dltConnector/DltConnectorClient.ts similarity index 87% rename from backend/src/apis/DltConnectorClient.ts rename to backend/src/apis/dltConnector/DltConnectorClient.ts index 14f95fbe7..800834c85 100644 --- a/backend/src/apis/DltConnectorClient.ts +++ b/backend/src/apis/dltConnector/DltConnectorClient.ts @@ -1,3 +1,4 @@ +import { Contribution } from '@entity/Contribution' import { Transaction as DbTransaction } from '@entity/Transaction' import { User as DbUser } from '@entity/User' import { gql, GraphQLClient } from 'graphql-request' @@ -6,7 +7,9 @@ import { CONFIG } from '@/config' import { TransactionTypeId } from '@/graphql/enum/TransactionTypeId' import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' -import { Contribution } from '@entity/Contribution' + +import { TransactionResult } from './model/TransactionResult' +import { UserIdentifier } from './model/UserIdentifier' const sendTransaction = gql` mutation ($input: TransactionInput!) { @@ -16,52 +19,6 @@ const sendTransaction = gql` } ` -enum TransactionType { - GRADIDO_TRANSFER = 1, - GRADIDO_CREATION = 2, - GROUP_FRIENDS_UPDATE = 3, - REGISTER_ADDRESS = 4, - GRADIDO_DEFERRED_TRANSFER = 5, - COMMUNITY_ROOT = 6, -} - -enum TransactionErrorType { - NOT_IMPLEMENTED_YET = 'Not Implemented yet', - MISSING_PARAMETER = 'Missing parameter', - ALREADY_EXIST = 'Already exist', - DB_ERROR = 'DB Error', - PROTO_DECODE_ERROR = 'Proto Decode Error', - PROTO_ENCODE_ERROR = 'Proto Encode Error', - INVALID_SIGNATURE = 'Invalid Signature', - LOGIC_ERROR = 'Logic Error', - NOT_FOUND = 'Not found', -} - -interface TransactionError { - type: TransactionErrorType - message: string - name: string -} - -interface TransactionRecipe { - id: number - createdAt: string - type: TransactionType - topic: string -} - -interface TransactionResult { - error?: TransactionError - recipe?: TransactionRecipe - succeed: boolean -} - -interface UserIdentifier { - uuid: string - communityUuid: string - accountNr?: number -} - // from ChatGPT function getTransactionTypeString(id: TransactionTypeId): string { const key = Object.keys(TransactionTypeId).find( diff --git a/backend/src/apis/dltConnector/enum/TransactionErrorType.ts b/backend/src/apis/dltConnector/enum/TransactionErrorType.ts new file mode 100644 index 000000000..5a2c5485e --- /dev/null +++ b/backend/src/apis/dltConnector/enum/TransactionErrorType.ts @@ -0,0 +1,14 @@ +/** + * Error Types for dlt-connector graphql responses + */ +export enum TransactionErrorType { + NOT_IMPLEMENTED_YET = 'Not Implemented yet', + MISSING_PARAMETER = 'Missing parameter', + ALREADY_EXIST = 'Already exist', + DB_ERROR = 'DB Error', + PROTO_DECODE_ERROR = 'Proto Decode Error', + PROTO_ENCODE_ERROR = 'Proto Encode Error', + INVALID_SIGNATURE = 'Invalid Signature', + LOGIC_ERROR = 'Logic Error', + NOT_FOUND = 'Not found', +} diff --git a/backend/src/apis/dltConnector/enum/TransactionType.ts b/backend/src/apis/dltConnector/enum/TransactionType.ts new file mode 100644 index 000000000..51b87c134 --- /dev/null +++ b/backend/src/apis/dltConnector/enum/TransactionType.ts @@ -0,0 +1,11 @@ +/** + * Transaction Types on Blockchain + */ +export enum TransactionType { + GRADIDO_TRANSFER = 1, + GRADIDO_CREATION = 2, + GROUP_FRIENDS_UPDATE = 3, + REGISTER_ADDRESS = 4, + GRADIDO_DEFERRED_TRANSFER = 5, + COMMUNITY_ROOT = 6, +} diff --git a/backend/src/apis/dltConnector/model/TransactionError.ts b/backend/src/apis/dltConnector/model/TransactionError.ts new file mode 100644 index 000000000..a2b1348a5 --- /dev/null +++ b/backend/src/apis/dltConnector/model/TransactionError.ts @@ -0,0 +1,7 @@ +import { TransactionErrorType } from '@dltConnector/enum/TransactionErrorType' + +export interface TransactionError { + type: TransactionErrorType + message: string + name: string +} diff --git a/backend/src/apis/dltConnector/model/TransactionRecipe.ts b/backend/src/apis/dltConnector/model/TransactionRecipe.ts new file mode 100644 index 000000000..edd7deadb --- /dev/null +++ b/backend/src/apis/dltConnector/model/TransactionRecipe.ts @@ -0,0 +1,8 @@ +import { TransactionType } from '@dltConnector/enum/TransactionType' + +export interface TransactionRecipe { + id: number + createdAt: string + type: TransactionType + topic: string +} diff --git a/backend/src/apis/dltConnector/model/TransactionResult.ts b/backend/src/apis/dltConnector/model/TransactionResult.ts new file mode 100644 index 000000000..510907429 --- /dev/null +++ b/backend/src/apis/dltConnector/model/TransactionResult.ts @@ -0,0 +1,8 @@ +import { TransactionError } from './TransactionError' +import { TransactionRecipe } from './TransactionRecipe' + +export interface TransactionResult { + error?: TransactionError + recipe?: TransactionRecipe + succeed: boolean +} diff --git a/backend/src/apis/dltConnector/model/UserIdentifier.ts b/backend/src/apis/dltConnector/model/UserIdentifier.ts new file mode 100644 index 000000000..e265593be --- /dev/null +++ b/backend/src/apis/dltConnector/model/UserIdentifier.ts @@ -0,0 +1,5 @@ +export interface UserIdentifier { + uuid: string + communityUuid: string + accountNr?: number +} diff --git a/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.test.ts b/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.test.ts index 05a5b44cf..0d85a35af 100644 --- a/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.test.ts +++ b/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.test.ts @@ -22,17 +22,15 @@ import { logger, i18n as localization } from '@test/testSetup' import { CONFIG } from '@/config' import { TransactionTypeId } from '@/graphql/enum/TransactionTypeId' - -import { sendTransactionsToDltConnector } from './sendTransactionsToDltConnector' -import { Contribution } from '@entity/Contribution' -import { User } from '@entity/User' -import { userFactory } from '@/seeds/factory/user' -import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { creations } from '@/seeds/creation' import { creationFactory } from '@/seeds/factory/creation' +import { userFactory } from '@/seeds/factory/user' +import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' +import { bobBaumeister } from '@/seeds/users/bob-baumeister' import { peterLustig } from '@/seeds/users/peter-lustig' import { raeuberHotzenplotz } from '@/seeds/users/raeuber-hotzenplotz' -import { bobBaumeister } from '@/seeds/users/bob-baumeister' + +import { sendTransactionsToDltConnector } from './sendTransactionsToDltConnector' /* // Mock the GraphQLClient diff --git a/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts b/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts index 9c6d50725..d381a35fc 100644 --- a/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts +++ b/backend/src/graphql/resolver/util/sendTransactionsToDltConnector.ts @@ -3,7 +3,8 @@ import { Community } from '@entity/Community' import { DltTransaction } from '@entity/DltTransaction' import { Transaction } from '@entity/Transaction' -import { DltConnectorClient } from '@/apis/DltConnectorClient' +import { DltConnectorClient } from '@dltConnector/DltConnectorClient' + import { backendLogger as logger } from '@/server/logger' import { Monitor, MonitorNames } from '@/util/Monitor' @@ -52,7 +53,6 @@ export async function sendTransactionsToDltConnector(): Promise { `error while sending to dlt-connector or writing messageId of dltTx=${dltTx.id}`, e, ) - console.log('error', e) } } } else { diff --git a/backend/tsconfig.json b/backend/tsconfig.json index 6d27ca0fa..7e329926b 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -49,6 +49,7 @@ "paths": { /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ "@/*": ["src/*"], "@arg/*": ["src/graphql/arg/*"], + "@dltConnector/*": ["src/apis/dltConnector/*"], "@enum/*": ["src/graphql/enum/*"], "@model/*": ["src/graphql/model/*"], "@union/*": ["src/graphql/union/*"], diff --git a/dlt-connector/src/interactions/backendToDb/transaction/CreateTransationRecipe.context.ts b/dlt-connector/src/interactions/backendToDb/transaction/CreateTransationRecipe.context.ts index 078ec8e5c..6c65e9036 100644 --- a/dlt-connector/src/interactions/backendToDb/transaction/CreateTransationRecipe.context.ts +++ b/dlt-connector/src/interactions/backendToDb/transaction/CreateTransationRecipe.context.ts @@ -37,10 +37,14 @@ export class CreateTransactionRecipeContext { return this.transactionRecipeRole.getTransaction() } - public async run(): Promise { + /** + * @returns true if a transaction recipe was created and false if it wasn't necessary + */ + public async run(): Promise { if (this.draft instanceof TransactionDraft) { this.transactionRecipeRole = new TransactionRecipeRole() await this.transactionRecipeRole.create(this.draft) + return true } else if (this.draft instanceof CommunityDraft) { if (!this.community) { throw new TransactionError(TransactionErrorType.MISSING_PARAMETER, 'community was not set') @@ -49,6 +53,8 @@ export class CreateTransactionRecipeContext { this.draft, this.community, ) + return true } + return false } }