Skip to content

Commit ffe37ee

Browse files
committed
update schemas
1 parent b243c5e commit ffe37ee

File tree

3 files changed

+32
-26
lines changed

3 files changed

+32
-26
lines changed

src/api/components/index.ts

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { AppRoles } from "common/roles.js";
22
import { FastifyZodOpenApiSchema } from "fastify-zod-openapi";
33
import * as z from "zod/v4";
4-
import { validateNetId } from "api/functions/validation.js";
54
import { CoreOrganizationList } from "@acm-uiuc/js-shared";
5+
export {
6+
illinoisSemesterId as semesterId,
7+
illinoisNetId,
8+
} from "../../common/types/generic.js";
69

710
export const ts = z.coerce.number().min(0).optional().meta({
811
description:
@@ -17,19 +20,6 @@ export const groupId = z.string().min(1).meta({
1720
id: "EntraGroupId",
1821
});
1922

20-
export const illinoisNetId = z
21-
.string()
22-
.min(3, { message: "NetID must be at least 3 characters." })
23-
.max(8, { message: "NetID cannot be more than 8 characters." })
24-
.regex(/^[a-zA-Z]{2}[a-zA-Z-]*(?:[2-9]|[1-9][0-9]{1,2})?$/, {
25-
message: "NetID is not valid!",
26-
})
27-
.meta({
28-
description: "Valid Illinois NetID",
29-
example: "rjjones",
30-
id: "IllinoisNetId",
31-
});
32-
3323
export const acmCoreOrganization = z
3424
.enum(CoreOrganizationList as [string, ...string[]])
3525
.meta({
@@ -38,15 +28,6 @@ export const acmCoreOrganization = z
3828
examples: ["ACM", "Infrastructure Committee"],
3929
});
4030

41-
export const semesterId = z
42-
.string()
43-
.min(1)
44-
.meta({
45-
description: "Short semester slug for a given semester.",
46-
id: "IllinoisSemesterId",
47-
examples: ["sp25", "fa24"],
48-
});
49-
5031
export function withTags<T extends FastifyZodOpenApiSchema>(
5132
tags: string[],
5233
schema: T,

src/common/types/generic.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import * as z from "zod/v4";
2+
3+
4+
export const illinoisSemesterId = z
5+
.string()
6+
.min(1)
7+
.max(4)
8+
.regex(/^(fa|sp|su|wi)\d{2}$/)
9+
.meta({
10+
description: "Short semester slug for a given semester.",
11+
id: "IllinoisSemesterId",
12+
examples: ["sp25", "fa24"],
13+
});
14+
15+
export const illinoisNetId = z
16+
.string()
17+
.min(3, { message: "NetID must be at least 3 characters." })
18+
.max(8, { message: "NetID cannot be more than 8 characters." })
19+
.regex(/^[a-zA-Z]{2}[a-zA-Z-]*(?:[2-9]|[1-9][0-9]{1,2})?$/, {
20+
message: "NetID is not valid!",
21+
})
22+
.meta({
23+
description: "Valid Illinois NetID. See https://answers.uillinois.edu/illinois/page.php?id=78766 for more information.",
24+
example: "rjjones",
25+
id: "IllinoisNetId",
26+
});

src/common/types/roomRequest.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as z from "zod/v4";
22
import { AllOrganizationList } from "@acm-uiuc/js-shared";
3+
import { illinoisSemesterId } from "./generic.js"
34

45
export const eventThemeOptions = [
56
"Arts & Music",
@@ -147,9 +148,7 @@ export const roomRequestPostResponse = z.object({
147148
export const roomRequestBaseSchema = z.object({
148149
host: z.enum(AllOrganizationList),
149150
title: z.string().min(2, "Title must have at least 2 characters"),
150-
semester: z.
151-
string().
152-
regex(/^(fa|sp|su|wi)\d{2}$/, "Invalid semester provided")
151+
semester: illinoisSemesterId
153152
});
154153
export const roomRequestDataSchema = roomRequestBaseSchema.extend({
155154
eventStart: z.coerce.date({

0 commit comments

Comments
 (0)