mirror of
https://github.com/ajnart/homarr.git
synced 2026-01-31 03:39:21 +01:00
51 lines
1.2 KiB
TypeScript
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,
|
|
};
|