2026-10-08 11:48:10 +00:00
|
|
|
import { z } from "zod/v4";
|
|
|
|
|
|
|
|
|
|
import { ConfigurationSchema } from "./access/access-definition";
|
|
|
|
|
export const FolderMappingInputSchema = z.strictObject({
|
|
|
|
|
profileId: z.uuid(),
|
|
|
|
|
needId: z.uuid(),
|
|
|
|
|
path: z.string().trim().min(1).max(255),
|
|
|
|
|
driveLetter: z
|
|
|
|
|
.string()
|
|
|
|
|
.trim()
|
|
|
|
|
.regex(/^[A-Za-z]:?$/)
|
|
|
|
|
.nullable(),
|
|
|
|
|
state: ConfigurationSchema,
|
|
|
|
|
notes: z.string().trim().max(4000).nullable(),
|
2026-10-05 10:02:04 +00:00
|
|
|
});
|
2026-10-08 11:48:10 +00:00
|
|
|
export type FolderMappingInput = z.infer<typeof FolderMappingInputSchema>;
|
|
|
|
|
export class FolderMappingError extends Error {
|
|
|
|
|
constructor(public readonly code: string) {
|
|
|
|
|
super(code);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
export const FOLDER_STATE_TRANSITIONS = {
|
|
|
|
|
pending: ["pending", "configured", "never_configured"],
|
|
|
|
|
configured: ["configured", "removal_pending"],
|
|
|
|
|
removal_pending: ["removal_pending", "removed"],
|
|
|
|
|
removed: ["removed"],
|
|
|
|
|
never_configured: ["never_configured"],
|
2026-10-05 10:02:04 +00:00
|
|
|
} as const;
|