sendou.ink/app/features/art/art-schemas.server.ts
Kalle fd48bced91
Migrate Prettier/Eslint/Stylelint setup to Biome (#1772)
* Initial

* CSS lint

* Test CI

* Add 1v1, 2v2, and 3v3 Tags (#1771)

* Initial

* CSS lint

* Test CI

* Rename step

---------

Co-authored-by: xi <104683822+ximk@users.noreply.github.com>
2024-06-24 13:07:17 +03:00

48 lines
914 B
TypeScript

import { z } from "zod";
import {
checkboxValueToDbBoolean,
dbBoolean,
falsyToNull,
id,
processMany,
removeDuplicates,
safeJSONParse,
} from "~/utils/zod";
import { ART } from "./art-constants";
const description = z.preprocess(
falsyToNull,
z.string().max(ART.DESCRIPTION_MAX_LENGTH).nullable(),
);
const linkedUsers = z.preprocess(
processMany(safeJSONParse, removeDuplicates),
z.array(id).max(ART.LINKED_USERS_MAX_LENGTH),
);
const tags = z.preprocess(
safeJSONParse,
z
.array(
z.object({
name: z.string().min(1).max(ART.TAG_MAX_LENGTH).optional(),
id: id.optional(),
}),
)
.max(ART.TAG_MAX_LENGTH),
);
export const newArtSchema = z.object({
description,
linkedUsers,
tags,
});
export const editArtSchema = z.object({
description,
linkedUsers,
tags,
isShowcase: z.preprocess(checkboxValueToDbBoolean, dbBoolean),
});
export const deleteArtSchema = z.object({
id,
});