gradido/dlt-connector/src/interactions/backendToDb/transaction/CommunityRootTransaction.role.ts
2023-10-23 19:07:13 +02:00

25 lines
1.0 KiB
TypeScript

import { CommunityDraft } from '@/graphql/input/CommunityDraft'
import { TransactionRecipeRole } from './TransactionRecipe.role'
import { Community } from '@entity/Community'
import { TransactionBodyBuilder } from '@/data/proto/TransactionBody.builder'
import { KeyPair } from '@/data/KeyPair'
import { sign } from '@/utils/cryptoHelper'
export class CommunityRootTransactionRole extends TransactionRecipeRole {
public createFromCommunityDraft(
communityDraft: CommunityDraft,
community: Community,
): CommunityRootTransactionRole {
// create proto transaction body
const transactionBody = new TransactionBodyBuilder()
.fromCommunityDraft(communityDraft, community)
.build()
// build transaction entity
this.transactionBuilder.fromTransactionBody(transactionBody).setSenderCommunity(community)
const transaction = this.transactionBuilder.getTransaction()
// sign
this.transactionBuilder.setSignature(sign(transaction.bodyBytes, new KeyPair(community)))
return this
}
}