Files
Homarr/packages/validation/src/group.ts
2025-02-16 11:39:31 +01:00

51 lines
1.2 KiB
TypeScript

import { z } from "zod";
import { everyoneGroup, groupPermissionKeys } from "@homarr/definitions";
import { byIdSchema } from "./common";
import { zodEnumFromArray } from "./enums";
const createSchema = z.object({
name: z
.string()
.trim()
.min(1)
.max(64)
.refine((value) => value !== everyoneGroup, {
message: "'everyone' is a reserved group name",
}),
});
const updateSchema = createSchema.merge(byIdSchema);
const settingsSchema = z.object({
homeBoardId: z.string().nullable(),
mobileHomeBoardId: z.string().nullable(),
});
const savePartialSettingsSchema = z.object({
id: z.string(),
settings: settingsSchema.partial(),
});
const savePermissionsSchema = z.object({
groupId: z.string(),
permissions: z.array(zodEnumFromArray(groupPermissionKeys)),
});
const savePositionsSchema = z.object({
positions: z.array(z.string()),
});
const groupUserSchema = z.object({ groupId: z.string(), userId: z.string() });
export const groupSchemas = {
create: createSchema,
update: updateSchema,
savePermissions: savePermissionsSchema,
groupUser: groupUserSchema,
savePartialSettings: savePartialSettingsSchema,
settings: settingsSchema,
savePositions: savePositionsSchema,
};