add time tracker with stats
This commit is contained in:
@@ -107,25 +107,50 @@ export const updateNoteSchema = z.object({
|
||||
});
|
||||
|
||||
// Time Tracking validators
|
||||
const optionalUuid = (message) =>
|
||||
z
|
||||
.preprocess(
|
||||
(val) => {
|
||||
if (val === undefined) return undefined;
|
||||
if (val === null || val === '') return null;
|
||||
return val;
|
||||
},
|
||||
z.string().uuid(message).nullable()
|
||||
)
|
||||
.optional();
|
||||
|
||||
const optionalDescription = z
|
||||
.preprocess(
|
||||
(val) => {
|
||||
if (val === undefined) return undefined;
|
||||
if (val === null) return null;
|
||||
if (typeof val !== 'string') return val;
|
||||
const trimmed = val.trim();
|
||||
return trimmed === '' ? null : trimmed;
|
||||
},
|
||||
z.string().max(1000).nullable()
|
||||
)
|
||||
.optional();
|
||||
|
||||
export const startTimeEntrySchema = z.object({
|
||||
projectId: z.string().uuid('Neplatný formát project ID').optional().or(z.literal('')),
|
||||
todoId: z.string().uuid('Neplatný formát todo ID').optional().or(z.literal('')),
|
||||
companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('')),
|
||||
description: z.string().max(1000).optional(),
|
||||
projectId: optionalUuid('Neplatný formát project ID'),
|
||||
todoId: optionalUuid('Neplatný formát todo ID'),
|
||||
companyId: optionalUuid('Neplatný formát company ID'),
|
||||
description: optionalDescription,
|
||||
});
|
||||
|
||||
export const stopTimeEntrySchema = z.object({
|
||||
projectId: z.string().uuid('Neplatný formát project ID').optional().or(z.literal('')),
|
||||
todoId: z.string().uuid('Neplatný formát todo ID').optional().or(z.literal('')),
|
||||
companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('')),
|
||||
description: z.string().max(1000).optional(),
|
||||
projectId: optionalUuid('Neplatný formát project ID'),
|
||||
todoId: optionalUuid('Neplatný formát todo ID'),
|
||||
companyId: optionalUuid('Neplatný formát company ID'),
|
||||
description: optionalDescription,
|
||||
});
|
||||
|
||||
export const updateTimeEntrySchema = z.object({
|
||||
startTime: z.string().optional(),
|
||||
endTime: z.string().optional(),
|
||||
projectId: z.string().uuid('Neplatný formát project ID').optional().or(z.literal('').or(z.null())),
|
||||
todoId: z.string().uuid('Neplatný formát todo ID').optional().or(z.literal('').or(z.null())),
|
||||
companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('').or(z.null())),
|
||||
description: z.string().max(1000).optional(),
|
||||
projectId: optionalUuid('Neplatný formát project ID'),
|
||||
todoId: optionalUuid('Neplatný formát todo ID'),
|
||||
companyId: optionalUuid('Neplatný formát company ID'),
|
||||
description: optionalDescription,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user