Files
outline/server/routes/api/stars/schema.ts
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

55 lines
1.4 KiB
TypeScript

import isEmpty from "lodash/isEmpty";
import { z } from "zod";
import { ValidateDocumentId, ValidateIndex } from "@server/validation";
import { BaseSchema } from "../schema";
export const StarsCreateSchema = BaseSchema.extend({
body: z
.object({
documentId: z
.string()
.refine(ValidateDocumentId.isValid, {
message: ValidateDocumentId.message,
})
.optional(),
collectionId: z.string().uuid().optional(),
index: z
.string()
.regex(ValidateIndex.regex, {
message: ValidateIndex.message,
})
.optional(),
})
.refine(
(body) => !(isEmpty(body.documentId) && isEmpty(body.collectionId)),
{
message: "One of documentId or collectionId is required",
}
),
});
export type StarsCreateReq = z.infer<typeof StarsCreateSchema>;
export const StarsListSchema = BaseSchema;
export type StarsListReq = z.infer<typeof StarsListSchema>;
export const StarsUpdateSchema = BaseSchema.extend({
body: z.object({
id: z.string().uuid(),
index: z.string().regex(ValidateIndex.regex, {
message: ValidateIndex.message,
}),
}),
});
export type StarsUpdateReq = z.infer<typeof StarsUpdateSchema>;
export const StarsDeleteSchema = BaseSchema.extend({
body: z.object({
id: z.string().uuid(),
}),
});
export type StarsDeleteReq = z.infer<typeof StarsDeleteSchema>;