Skip to content

Commit 7ba49c3

Browse files
committed
add vote get endpoint
1 parent 2a4ed85 commit 7ba49c3

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

src/models/db/vote.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,16 @@ export function getVoteAggregateForRace(this: VotingObject, id: number) {
6969
return votesWithPreferences.reduce(reduceFunction, {});
7070
}
7171

72+
export function getVoteCollatedForRace(this: VotingObject, id: number) {
73+
const votesCollated = this.db.query.votesTable.findMany({
74+
with: {
75+
votePreferences: true
76+
}
77+
})
78+
79+
return votesCollated
80+
}
81+
7282
export function deleteVote(this: VotingObject, id: number) {
7383
return this.db.delete(votesTable).where(eq(votesTable.id, id)).returning();
7484
}

src/models/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { getRace, getAllRaces, insertRace, updateRace, deleteRace, getCurrentRac
99
import { getSeat, insertSeat, deleteSeat, getSeatByCode } from "./db/seat";
1010
import { countUsers, getAllUsers, insertUser, updateUser, getUser, getUserByEmail, deleteUser } from "./db/user";
1111
import { getAllVotePreferences, insertVotePreference, updateVotePreference, getVotePreference, deleteVotePreference, getVotePreferencesForVote, getVotePreferenceForCandidate } from "./db/vote-preference";
12-
import { countVotesForRace, getAllVotesForRace, insertVote, updateVote, getAllVotesByUser, getVoteByUserAndRace, deleteVote, getVoteAggregateForRace } from "./db/vote";
12+
import { countVotesForRace, getAllVotesForRace, insertVote, updateVote, getAllVotesByUser, getVoteByUserAndRace, deleteVote, getVoteAggregateForRace, getVoteCollatedForRace } from "./db/vote";
1313
import { seedMasterSeat, devSeeds, seedPositions, seedRaces } from "./seed";
1414
import * as schema from "./schema";
1515
import { eq } from "drizzle-orm";
@@ -324,6 +324,10 @@ export class VotingObject extends DurableObject {
324324
return getVoteAggregateForRace.call(this, ...args);
325325
}
326326

327+
getVoteCollatedForRace(...args: Parameters<typeof getVoteCollatedForRace>) {
328+
return getVoteCollatedForRace.call(this, ...args);
329+
}
330+
327331
// Elected
328332
insertElected(...args: Parameters<typeof insertElected>) {
329333
return insertElected.call(this, ...args);

src/routes/vote.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,21 @@ app.get(
4949
}
5050
);
5151

52+
app.get("/:race_id",
53+
zValidator(
54+
"param",
55+
z.object({
56+
race_id: z.number({ coerce: true }),
57+
})
58+
),
59+
requireAdmin,
60+
async (c) => {
61+
const { race_id } = c.req.valid("param");
62+
const votes = await c.var.STUB.getVoteCollatedForRace(race_id)
63+
return c.json(votes)
64+
}
65+
)
66+
5267
app.post(
5368
"/:race_id",
5469
zValidator(

0 commit comments

Comments
 (0)