Skip to content

Commit

Permalink
move add round number logic to resolver chain
Browse files Browse the repository at this point in the history
  • Loading branch information
pearl-truss committed Jan 21, 2025
1 parent af20cd4 commit fa5593d
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 12 deletions.
17 changes: 5 additions & 12 deletions services/app-api/src/postgres/questionResponse/questionHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,19 +67,12 @@ const convertToCommonIndexQuestionsPayload = <
const getDivisionQuestionsEdge = (
division: 'DMCP' | 'DMCO' | 'OACT',
questions: P[]
) => {
const divisionQuestions = questions
) => ({
totalCount: questions.filter((q) => q.division === division).length,
edges: questions
.filter((q) => q.division === division)
.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())
.map((question, idx) => {
question.round = idx + 1
return { node: question }
})
return {
totalCount: divisionQuestions.length,
edges: divisionQuestions,
}
}
.map((question) => ({ node: question })),
})

return {
DMCOQuestions: getDivisionQuestionsEdge('DMCO', questions),
Expand Down
2 changes: 2 additions & 0 deletions services/app-api/src/resolvers/configureResolvers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
questionResponseDocumentResolver,
createRateQuestionResolver,
createRateQuestionResponseResolver,
questionResolver,
} from './questionResponse'
import {
fetchCurrentUserResolver,
Expand Down Expand Up @@ -171,6 +172,7 @@ export function configureResolvers(
Rate: rateResolver(store, applicationEndpoint),
RateRevision: rateRevisionResolver(store),
RateFormData: rateFormDataResolver(),
ContractQuestion: questionResolver(store),
Contract: contractResolver(store, applicationEndpoint),
UnlockedContract: unlockedContractResolver(store, applicationEndpoint),
ContractRevision: contractRevisionResolver(store),
Expand Down
1 change: 1 addition & 0 deletions services/app-api/src/resolvers/questionResponse/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ export { createContractQuestionResponseResolver } from './createContractQuestion
export { questionResponseDocumentResolver } from './questionResponseDocumentResolver'
export { createRateQuestionResolver } from './createRateQuestion'
export { createRateQuestionResponseResolver } from './createRateQuestionResponse'
export { questionResolver } from './questionResolver'
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import type { Resolvers } from '../../gen/gqlServer'

import type { ContractQuestionType } from '../../domain-models'
import type { Store } from '../../postgres'

import { GraphQLError } from 'graphql'
export function questionResolver(store: Store): Resolvers['QuestionResolver'] {
return {
round: async (parent: ContractQuestionType) => {
const questions = await store.findAllQuestionsByContract(
parent.contractID
)
if (questions instanceof Error) {
const errMessage = `Issue finding contract message: ${questions.message}`

throw new GraphQLError(errMessage, {
extensions: {
code: 'INTERNAL_SERVER_ERROR',
cause: 'DB_ERROR',
},
})
}

const divisionQuestions = questions
?.filter((q) => q.division === parent.division)
.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())

const matchingQuestion = divisionQuestions?.find(
(question) => question.id == parent.id
)

if (!matchingQuestion) {
return 0
} else {
return divisionQuestions?.indexOf(matchingQuestion) !==
undefined
? divisionQuestions?.indexOf(matchingQuestion) + 1
: 0
}
},
// responses: async (parent: any) => {
// const questions = await store.findAllQuestionsByContract(parent.contractID)
// if (questions instanceof Error) {
// const errMessage = `Issue finding contract message: ${questions.message}`

// throw new GraphQLError(errMessage, {
// extensions: {
// code: 'INTERNAL_SERVER_ERROR',
// cause: 'DB_ERROR',
// },
// })
// }

// let round = 0
// const divisionQuestions = questions?.
// filter((q) => q.division === parent.division).
// sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())

// const matchingQuestion = divisionQuestions?.find(
// (question) => question.id == parent.id)

// if (!matchingQuestion) {
// round = 0
// } else {
// divisionQuestions?.indexOf(matchingQuestion) !== undefined
// ? round = divisionQuestions?.indexOf(matchingQuestion) + 1
// : round = 0
// }
// const responses = parent.responses.map((res: any) => {
// res.round = round
// return round
// })
// return responses
// }
}
}

0 comments on commit fa5593d

Please sign in to comment.