Changed the Contribution.find so that we can throw a specific error, added an GraphQL Model as return value instead of DbEntity.

This commit is contained in:
elweyn 2022-08-23 11:55:34 +02:00
parent 1c433e2d57
commit 2c459a8fae
2 changed files with 19 additions and 12 deletions

View File

@ -62,9 +62,10 @@ import {
MEMO_MAX_CHARS,
MEMO_MIN_CHARS,
} from './const/const'
import { ContributionMessage } from '@entity/ContributionMessage'
import { ContributionMessage as DbContributionMessage } from '@entity/ContributionMessage'
import ContributionMessageArgs from '@arg/ContributionMessageArgs'
import { ContributionMessageType } from '@enum/MessageType'
import { ContributionMessage } from '@model/ContributionMessage'
// const EMAIL_OPT_IN_REGISTER = 1
// const EMAIL_OPT_UNKNOWN = 3 // elopage?
@ -710,16 +711,18 @@ export class AdminResolver {
const queryRunner = getConnection().createQueryRunner()
await queryRunner.connect()
await queryRunner.startTransaction('READ UNCOMMITTED')
const contributionMessage = new ContributionMessage()
const contributionMessage = DbContributionMessage.create()
try {
const contribution = await Contribution.findOneOrFail({ id: contributionId })
const contribution = await Contribution.findOne({ id: contributionId })
if (!contribution) {
throw new Error('Contribution not found')
}
contributionMessage.contributionId = contributionId
contributionMessage.createdAt = new Date()
contributionMessage.message = message
contributionMessage.userId = user.id
contributionMessage.type = ContributionMessageType.DIALOG
await queryRunner.manager.insert(ContributionMessage, contributionMessage)
await queryRunner.manager.insert(DbContributionMessage, contributionMessage)
if (
contribution.contributionStatus === ContributionStatus.DELETED ||
@ -737,6 +740,6 @@ export class AdminResolver {
} finally {
await queryRunner.release()
}
return contributionMessage
return new ContributionMessage(contributionMessage, new User(user))
}
}

View File

@ -1,17 +1,18 @@
import { backendLogger as logger } from '@/server/logger'
import { RIGHTS } from '@/auth/RIGHTS'
import { Context, getUser } from '@/server/context'
import { ContributionMessage } from '@entity/ContributionMessage'
import { ContributionMessage as DbContributionMessage } from '@entity/ContributionMessage'
import { Args, Authorized, Ctx, Mutation, Resolver } from 'type-graphql'
import ContributionMessageArgs from '@arg/ContributionMessageArgs'
import { Contribution } from '@entity/Contribution'
import { ContributionMessageType } from '@enum/MessageType'
import { ContributionStatus } from '@enum/ContributionStatus'
import { getConnection } from '@dbTools/typeorm'
import { ContributionMessage } from '@model/ContributionMessage'
import { User } from '@model/User'
@Resolver()
export class ContributionResolver {
// TODO: Have two method one for admin on for
@Authorized([RIGHTS.CREATE_CONTRIBUTION_MESSAGE])
@Mutation(() => ContributionMessage)
async createContributionMessage(
@ -22,9 +23,12 @@ export class ContributionResolver {
const queryRunner = getConnection().createQueryRunner()
await queryRunner.connect()
await queryRunner.startTransaction('READ UNCOMMITTED')
const contributionMessage = new ContributionMessage()
const contributionMessage = DbContributionMessage.create()
try {
const contribution = await Contribution.findOneOrFail({ id: contributionId })
const contribution = await Contribution.findOne({ id: contributionId })
if (!contribution) {
throw new Error('Contribution not found')
}
if (contribution.userId !== user.id) {
throw new Error('Can not send message to contribution of another user')
}
@ -34,7 +38,7 @@ export class ContributionResolver {
contributionMessage.message = message
contributionMessage.userId = user.id
contributionMessage.type = ContributionMessageType.DIALOG
await queryRunner.manager.insert(ContributionMessage, contributionMessage)
await queryRunner.manager.insert(DbContributionMessage, contributionMessage)
if (contribution.contributionStatus === ContributionStatus.IN_PROGRESS) {
contribution.contributionStatus = ContributionStatus.PENDING
@ -48,6 +52,6 @@ export class ContributionResolver {
} finally {
await queryRunner.release()
}
return contributionMessage
return new ContributionMessage(contributionMessage, new User(user))
}
}