Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 44x 9x 7x 44x 5x 44x 44x 44x 5x 44x | import mongoose from "mongoose";
import { z } from "zod";
import dayjs from "dayjs";
export const ResultsSchemaDb = z
.object({
results: z.array(
z.object({
username: z.string(),
assignmentSignup: z.object({
programItemId: z.string(),
priority: z.number(),
signedToStartTime: z
.date()
.transform((date) => dayjs(date).toISOString()),
}),
}),
),
// Snapshot of the groups that took part in this lottery run, as they were when it ran
groups: z.array(
z.object({
groupCode: z.string(),
groupCreator: z.string(),
groupMembers: z.array(z.string()),
}),
),
assignmentTime: z.date().transform((date) => dayjs(date).toISOString()),
algorithm: z.string(),
message: z.string(),
})
.strip();
const assignmentSignupSchema = new mongoose.Schema({
programItemId: { type: String, required: true },
priority: { type: Number, required: true },
signedToStartTime: {
type: Date,
get: (value: Date) => new Date(value),
required: true,
},
});
const resultsArraySchema = new mongoose.Schema({
username: { type: String, required: true },
assignmentSignup: { type: assignmentSignupSchema, required: true },
});
const groupSchema = new mongoose.Schema({
groupCode: { type: String, required: true },
groupCreator: { type: String, required: true },
groupMembers: { type: [String], required: true },
});
const resultsSchema = new mongoose.Schema(
{
results: { type: [resultsArraySchema], required: true },
groups: { type: [groupSchema], required: true },
assignmentTime: {
type: Date,
get: (value: Date) => new Date(value),
required: true,
},
algorithm: { type: String, required: true },
message: { type: String, required: true },
},
{ timestamps: true },
);
export const ResultsModel = mongoose.model("results", resultsSchema);
|