Files
Tom Moor 428b3c9553 chore: Ensure comment data is validated before persisting (#6322)
Fix flash on render of comment create
2023-12-28 10:46:50 -08:00

47 lines
1.2 KiB
TypeScript

import isEmpty from "lodash/isEmpty";
import { z } from "zod";
import { Revision } from "@server/models";
import { BaseSchema } from "@server/routes/api/schema";
export const RevisionsInfoSchema = BaseSchema.extend({
body: z
.object({
id: z.string().uuid().optional(),
documentId: z.string().uuid().optional(),
})
.refine((req) => !(isEmpty(req.id) && isEmpty(req.documentId)), {
message: "id or documentId is required",
}),
});
export type RevisionsInfoReq = z.infer<typeof RevisionsInfoSchema>;
export const RevisionsDiffSchema = BaseSchema.extend({
body: z.object({
id: z.string().uuid(),
compareToId: z.string().uuid().optional(),
}),
});
export type RevisionsDiffReq = z.infer<typeof RevisionsDiffSchema>;
export const RevisionsListSchema = z.object({
body: z.object({
direction: z
.string()
.optional()
.transform((val) => (val !== "ASC" ? "DESC" : val)),
sort: z
.string()
.refine((val) => Object.keys(Revision.getAttributes()).includes(val), {
message: "Invalid sort parameter",
})
.default("createdAt"),
documentId: z.string().uuid(),
}),
});
export type RevisionsListReq = z.infer<typeof RevisionsListSchema>;