From 9ce8dfd493b3780fd80f1b1ae41bf5337a030710 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 14 May 2024 11:56:07 +0200 Subject: [PATCH] refactor dlt-connector a bit, fix some wrong code --- dlt-connector/src/config/index.ts | 2 +- dlt-connector/src/data/Community.repository.ts | 6 ++++++ dlt-connector/src/graphql/resolver/AccountsResolver.ts | 8 ++++++-- dlt-connector/src/graphql/schema.ts | 3 ++- .../backendToDb/account/RegisterAddress.context.ts | 4 +++- .../transaction/CreateTransactionRecipe.context.ts | 4 ++++ .../transaction/RegisterAddressTransaction.role.ts | 3 +++ 7 files changed, 25 insertions(+), 5 deletions(-) diff --git a/dlt-connector/src/config/index.ts b/dlt-connector/src/config/index.ts index 6b4fdae9a..9cbdac441 100644 --- a/dlt-connector/src/config/index.ts +++ b/dlt-connector/src/config/index.ts @@ -4,7 +4,7 @@ dotenv.config() const constants = { LOG4JS_CONFIG: 'log4js-config.json', - DB_VERSION: '0003-refactor_transaction_recipe', + DB_VERSION: '0004-fix_spelling', // default log level on production should be info LOG_LEVEL: process.env.LOG_LEVEL ?? 'info', CONFIG_VERSION: { diff --git a/dlt-connector/src/data/Community.repository.ts b/dlt-connector/src/data/Community.repository.ts index 78023b15e..dca283a67 100644 --- a/dlt-connector/src/data/Community.repository.ts +++ b/dlt-connector/src/data/Community.repository.ts @@ -73,4 +73,10 @@ export const CommunityRepository = getDataSource() } return new KeyPair(community) }, + + async loadHomeCommunity(): Promise { + return await this.findOneOrFail({ + where: { foreign: false }, + }) + }, }) diff --git a/dlt-connector/src/graphql/resolver/AccountsResolver.ts b/dlt-connector/src/graphql/resolver/AccountsResolver.ts index 91ac7bd73..b90b5561c 100644 --- a/dlt-connector/src/graphql/resolver/AccountsResolver.ts +++ b/dlt-connector/src/graphql/resolver/AccountsResolver.ts @@ -1,11 +1,11 @@ +import { TransactionRecipe } from '@model/TransactionRecipe' import { Arg, Mutation, Query, Resolver } from 'type-graphql' import { QueryFailedError } from 'typeorm' -import { TransactionRecipe } from '@model/TransactionRecipe' - import { TRANSMIT_TO_IOTA_INTERRUPTIVE_SLEEP_KEY } from '@/data/const' import { UserRepository } from '@/data/User.repository' import { RegisterAddressContext } from '@/interactions/backendToDb/account/RegisterAddress.context' +import { AccountLoggingView } from '@/logging/AccountLogging.view' import { logger } from '@/logging/logger' import { TransactionLoggingView } from '@/logging/TransactionLogging.view' import { InterruptiveSleepManager } from '@/manager/InterruptiveSleepManager' @@ -33,6 +33,10 @@ export class AccountResolver { const registerAddressContext = new RegisterAddressContext(userAccountDraft) try { const { transaction, account } = await registerAddressContext.run() + logger.info('register address', { + account: new AccountLoggingView(account), + transaction: new TransactionLoggingView(transaction), + }) await getDataSource().transaction(async (transactionalEntityManager) => { await transactionalEntityManager.save(account) await transactionalEntityManager.save(transaction) diff --git a/dlt-connector/src/graphql/schema.ts b/dlt-connector/src/graphql/schema.ts index bbd61c63f..a756b1ac9 100755 --- a/dlt-connector/src/graphql/schema.ts +++ b/dlt-connector/src/graphql/schema.ts @@ -2,13 +2,14 @@ import { Decimal } from 'decimal.js-light' import { GraphQLSchema } from 'graphql' import { buildSchema } from 'type-graphql' +import { AccountResolver } from './resolver/AccountsResolver' import { CommunityResolver } from './resolver/CommunityResolver' import { TransactionResolver } from './resolver/TransactionsResolver' import { DecimalScalar } from './scalar/Decimal' export const schema = async (): Promise => { return buildSchema({ - resolvers: [TransactionResolver, CommunityResolver], + resolvers: [TransactionResolver, CommunityResolver, AccountResolver], scalarsMap: [{ type: Decimal, scalar: DecimalScalar }], validate: { validationError: { target: false }, diff --git a/dlt-connector/src/interactions/backendToDb/account/RegisterAddress.context.ts b/dlt-connector/src/interactions/backendToDb/account/RegisterAddress.context.ts index 196c0daf4..c84cb0149 100644 --- a/dlt-connector/src/interactions/backendToDb/account/RegisterAddress.context.ts +++ b/dlt-connector/src/interactions/backendToDb/account/RegisterAddress.context.ts @@ -25,7 +25,8 @@ export class RegisterAddressContext { public constructor(private userAccountDraft: UserAccountDraft) {} public async run(): Promise { - const communityKeyPair = await CommunityRepository.loadHomeCommunityKeyPair() + const community = await CommunityRepository.loadHomeCommunity() + const communityKeyPair = new KeyPair(community) const user = await this.loadOrCreateUser(communityKeyPair) if (this.isAccountAlreadyExistOnUser(user)) { throw new TransactionError( @@ -37,6 +38,7 @@ export class RegisterAddressContext { const account = this.createAccount(new UserLogic(user).calculateKeyPair(communityKeyPair)) account.user = user const createTransactionContext = new CreateTransactionRecipeContext(this.userAccountDraft, { + community, account, }) await createTransactionContext.run() diff --git a/dlt-connector/src/interactions/backendToDb/transaction/CreateTransactionRecipe.context.ts b/dlt-connector/src/interactions/backendToDb/transaction/CreateTransactionRecipe.context.ts index 42e633a18..abd87616b 100644 --- a/dlt-connector/src/interactions/backendToDb/transaction/CreateTransactionRecipe.context.ts +++ b/dlt-connector/src/interactions/backendToDb/transaction/CreateTransactionRecipe.context.ts @@ -74,9 +74,13 @@ export class CreateTransactionRecipeContext { if (!this.data?.account) { throw new TransactionError(TransactionErrorType.MISSING_PARAMETER, 'account was not set') } + if (!this.data.community) { + throw new TransactionError(TransactionErrorType.MISSING_PARAMETER, 'community was not set') + } this.transactionRecipe = await new RegisterAddressTransactionRole().create( this.draft, this.data.account, + this.data.community, ) return true } diff --git a/dlt-connector/src/interactions/backendToDb/transaction/RegisterAddressTransaction.role.ts b/dlt-connector/src/interactions/backendToDb/transaction/RegisterAddressTransaction.role.ts index 84de6b5df..8b342b1fd 100644 --- a/dlt-connector/src/interactions/backendToDb/transaction/RegisterAddressTransaction.role.ts +++ b/dlt-connector/src/interactions/backendToDb/transaction/RegisterAddressTransaction.role.ts @@ -1,4 +1,5 @@ import { Account } from '@entity/Account' +import { Community } from '@entity/Community' import { AccountLogic } from '@/data/Account.logic' import { CommunityRepository } from '@/data/Community.repository' @@ -13,6 +14,7 @@ export class RegisterAddressTransactionRole extends AbstractTransactionRecipeRol async create( userAccountDraft: UserAccountDraft, account: Account, + community: Community, ): Promise { const bodyBuilder = new TransactionBodyBuilder() const communityKeyPair = await CommunityRepository.loadHomeCommunityKeyPair() @@ -22,6 +24,7 @@ export class RegisterAddressTransactionRole extends AbstractTransactionRecipeRol } this.transactionBuilder .fromTransactionBodyBuilder(bodyBuilder.fromUserAccountDraft(userAccountDraft, account)) + .setCommunity(community) .setSignature(signingKeyPair.sign(this.transactionBuilder.getTransaction().bodyBytes)) .setSigningAccount(account) return this