Skip to content

Commit

Permalink
Merge pull request #32 from ProgSoc/pr32
Browse files Browse the repository at this point in the history
Fix room question bug
  • Loading branch information
arduano authored Oct 22, 2024
2 parents 389bc35 + d7aa8d9 commit cb795c8
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
21 changes: 20 additions & 1 deletion src/server/src/room/interaction/db/queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ export async function dbFetchCurrentQuestionData(roomId: string) {
const questions = await e
.select(e.Question, question => ({
...questionQueryFields,
// filter: e.op(question['<questions[is Room]'].id, '=', e.uuid(roomId)),
filter: e.op(question['<questions[is Room]'].id, '=', e.uuid(roomId)),
order_by: { expression: question.createdAt, direction: e.DESC },
limit: 1,
}))
Expand Down Expand Up @@ -287,16 +287,31 @@ export async function dbInsertQuestionPreferentialVote(questionId: string, userI
}

interface DbSingleVoteQuestionDetails {
roomId: string;
question: string;
candidates: string[];
}

interface DbPreferentialVoteQuestionDetails {
roomId: string;
question: string;
maxElected: number;
candidates: string[];
}

async function addQuestionToRoom(question: DbQuestionData, roomId: string) {
await e
.update(e.Room, () => ({
filter_single: { id: roomId },
set: {
questions: {
'+=': e.select(e.Question, () => ({ filter_single: { id: question.id } })),
},
},
}))
.run(dbClient);
}

export async function dbCreateSingleVoteQuestion(details: DbSingleVoteQuestionDetails) {
const questionInsert = e.insert(e.Question, {
format: e.QuestionFormat.SingleVote,
Expand All @@ -313,6 +328,8 @@ export async function dbCreateSingleVoteQuestion(details: DbSingleVoteQuestionDe
}))
.run(dbClient);

await addQuestionToRoom(questionResult, details.roomId);

return questionResult;
}

Expand All @@ -333,6 +350,8 @@ export async function dbCreatePreferentialVoteQuestion(details: DbPreferentialVo
}))
.run(dbClient);

await addQuestionToRoom(questionResult, details.roomId);

return questionResult;
}

Expand Down
6 changes: 3 additions & 3 deletions src/server/src/room/interaction/db/questions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@ function mapDbQuestionData(question: DbQuestionData): RoomQuestion {
uniqueVoters.add(vote.voter.id);
});
candidate.preferentialCandidateVotes.forEach((vote) => {
candidate.preferentialCandidateVotes.forEach((vote) => {
uniqueVoters.add(vote.voter.id);
});
uniqueVoters.add(vote.voter.id);
});
});

Expand Down Expand Up @@ -177,13 +175,15 @@ export function makeQuestionModificationFunctions(roomId: string) {
switch (params.details.type) {
case 'SingleVote': {
questionPromise = dbCreateSingleVoteQuestion({
roomId,
candidates: params.candidates,
question: params.question,
});
break;
}
case 'PreferentialVote':
questionPromise = dbCreatePreferentialVoteQuestion({
roomId,
candidates: params.candidates,
question: params.question,
maxElected: params.details.maxElected,
Expand Down

0 comments on commit cb795c8

Please sign in to comment.