mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-09 04:02:40 -05:00
17 lines
555 B
TypeScript
17 lines
555 B
TypeScript
import { z } from "zod";
|
|
import type { PlusVoteFromFE } from "~/features/plus-voting/core";
|
|
import { assertType } from "~/utils/types";
|
|
import { safeJSONParse } from "~/utils/zod";
|
|
import { PLUS_DOWNVOTE, PLUS_UPVOTE } from "./plus-voting-constants";
|
|
|
|
const voteSchema = z.object({
|
|
votedId: z.number(),
|
|
score: z.number().refine((val) => [PLUS_DOWNVOTE, PLUS_UPVOTE].includes(val)),
|
|
});
|
|
|
|
assertType<z.infer<typeof voteSchema>, PlusVoteFromFE>();
|
|
|
|
export const votingActionSchema = z.object({
|
|
votes: z.preprocess(safeJSONParse, z.array(voteSchema)),
|
|
});
|