diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index ed415da08..7fbc0aae0 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -12,7 +12,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0079-fill_linked_user_id_of_contributions', + DB_VERSION: '0080-fill_linked_user_gradidoId_of_contributions', DECAY_START_TIME: new Date('2021-05-13 17:46:31-0000'), // GMT+0 LOG4JS_CONFIG: 'log4js-config.json', // default log level on production should be info diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 8b2bf141e..a188c5d2c 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -2609,7 +2609,7 @@ describe('ContributionResolver', () => { expect(transaction[0].linkedTransactionId).toEqual(null) expect(transaction[0].transactionLinkId).toEqual(null) expect(transaction[0].previous).toEqual(null) - expect(transaction[0].linkedUserId).toEqual(null) + expect(transaction[0].linkedUserId).toEqual(admin.id) expect(transaction[0].typeId).toEqual(1) }) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index c07a691a3..5684835e4 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -451,7 +451,11 @@ export class ContributionResolver { transaction.userId = contribution.userId transaction.userGradidoID = user.gradidoID transaction.userName = fullName(user.firstName, user.lastName) - transaction.linkedUserId = contribution.moderatorId + transaction.userCommunityUuid = user.communityUuid + transaction.linkedUserId = moderatorUser.id + transaction.linkedUserGradidoID = moderatorUser.gradidoID + transaction.linkedUserName = fullName(moderatorUser.firstName, moderatorUser.lastName) + transaction.linkedUserCommunityUuid = moderatorUser.communityUuid transaction.previous = lastTransaction ? lastTransaction.id : null transaction.amount = contribution.amount transaction.creationDate = contribution.contributionDate diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index d379efef3..b4fd5c4e3 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -109,9 +109,11 @@ export const executeTransaction = async ( transactionSend.userId = sender.id transactionSend.userGradidoID = sender.gradidoID transactionSend.userName = fullName(sender.firstName, sender.lastName) + transactionSend.userCommunityUuid = sender.communityUuid transactionSend.linkedUserId = recipient.id transactionSend.linkedUserGradidoID = recipient.gradidoID transactionSend.linkedUserName = fullName(recipient.firstName, recipient.lastName) + transactionSend.linkedUserCommunityUuid = recipient.communityUuid transactionSend.amount = amount.mul(-1) transactionSend.balance = sendBalance.balance transactionSend.balanceDate = receivedCallDate @@ -129,9 +131,11 @@ export const executeTransaction = async ( transactionReceive.userId = recipient.id transactionReceive.userGradidoID = recipient.gradidoID transactionReceive.userName = fullName(recipient.firstName, recipient.lastName) + transactionReceive.userCommunityUuid = recipient.communityUuid transactionReceive.linkedUserId = sender.id transactionReceive.linkedUserGradidoID = sender.gradidoID transactionReceive.linkedUserName = fullName(sender.firstName, sender.lastName) + transactionReceive.linkedUserCommunityUuid = sender.communityUuid transactionReceive.amount = amount const receiveBalance = await calculateBalance(recipient.id, amount, receivedCallDate) transactionReceive.balance = receiveBalance ? receiveBalance.balance : amount diff --git a/database/migrations/0080-fill_linked_user_gradidoId_of_contributions.ts b/database/migrations/0080-fill_linked_user_gradidoId_of_contributions.ts new file mode 100644 index 000000000..ae5ef6ccf --- /dev/null +++ b/database/migrations/0080-fill_linked_user_gradidoId_of_contributions.ts @@ -0,0 +1,34 @@ +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn( + `UPDATE \`transactions\` AS t + JOIN \`contributions\` AS c ON t.id = c.transaction_id + JOIN \`users\` AS u ON u.id = c.confirmed_by + SET + t.linked_user_gradido_id = u.gradido_id, + t.linked_user_name = CONCAT(u.first_name, ' ', u.last_name), + t.linked_user_community_uuid = u.community_uuid + WHERE t.type_id = ?`, + [1], + ) + + // fill user community uuid fields in transactions + await queryFn( + `UPDATE \`transactions\` AS t + JOIN \`users\` AS u ON u.id = t.user_id + JOIN \`users\` AS lu ON lu.id = t.linked_user_id + SET + t.user_community_uuid = u.community_uuid, + t.linked_user_community_uuid = lu.community_uuid`, + ) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn( + `UPDATE \`transactions\` SET \`linked_user_gradido_id\` = NULL, \`linked_user_name\` = NULL where \`type_id\` = ?;`, + [1], + ) + + await queryFn( + `UPDATE \`transactions\` SET \`user_community_uuid\` = NULL, \`linked_user_community_uuid\` = NULL;`, + ) +} diff --git a/dht-node/src/config/index.ts b/dht-node/src/config/index.ts index b0661126f..3459ec058 100644 --- a/dht-node/src/config/index.ts +++ b/dht-node/src/config/index.ts @@ -4,7 +4,7 @@ import dotenv from 'dotenv' dotenv.config() const constants = { - DB_VERSION: '0079-fill_linked_user_id_of_contributions', + DB_VERSION: '0080-fill_linked_user_gradidoId_of_contributions', LOG4JS_CONFIG: 'log4js-config.json', // default log level on production should be info LOG_LEVEL: process.env.LOG_LEVEL || 'info', diff --git a/federation/src/config/index.ts b/federation/src/config/index.ts index 9ce6f18e3..5f1b2e0c6 100644 --- a/federation/src/config/index.ts +++ b/federation/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0079-fill_linked_user_id_of_contributions', + DB_VERSION: '0080-fill_linked_user_gradidoId_of_contributions', DECAY_START_TIME: new Date('2021-05-13 17:46:31-0000'), // GMT+0 LOG4JS_CONFIG: 'log4js-config.json', // default log level on production should be info