refactor(api): split timeline read schemas

This commit is contained in:
2026-03-31 18:56:01 +02:00
parent 424ee24280
commit d61527b38c
6 changed files with 42 additions and 38 deletions
@@ -2,7 +2,7 @@ import { controllerProcedure, protectedProcedure } from "../trpc.js";
import {
TimelineDetailFiltersSchema,
TimelineWindowFiltersSchema,
} from "./timeline-read-shared.js";
} from "./timeline-read-schema-support.js";
import {
readMyTimelineEntriesView,
readTimelineEntries,
@@ -2,7 +2,7 @@ import { controllerProcedure, protectedProcedure } from "../trpc.js";
import {
TimelineDetailFiltersSchema,
TimelineWindowFiltersSchema,
} from "./timeline-read-shared.js";
} from "./timeline-read-schema-support.js";
import {
loadTimelineHolidayOverlays,
} from "./timeline-holiday-load-support.js";
@@ -3,7 +3,7 @@ import { controllerProcedure } from "../trpc.js";
import {
TimelineProjectContextDetailSchema,
TimelineProjectIdSchema,
} from "./timeline-read-shared.js";
} from "./timeline-read-schema-support.js";
import {
readTimelineProjectContextDetailResponse,
readTimelineProjectContextResponse,
@@ -0,0 +1,35 @@
import { z } from "zod";
export const TimelineWindowFiltersSchema = z.object({
startDate: z.coerce.date(),
endDate: z.coerce.date(),
resourceIds: z.array(z.string()).optional(),
projectIds: z.array(z.string()).optional(),
clientIds: z.array(z.string()).optional(),
chapters: z.array(z.string()).optional(),
eids: z.array(z.string()).optional(),
countryCodes: z.array(z.string()).optional(),
});
export const TimelineDetailFiltersSchema = z.object({
startDate: z.string().optional(),
endDate: z.string().optional(),
durationDays: z.number().int().min(1).max(366).optional(),
resourceIds: z.array(z.string()).optional(),
projectIds: z.array(z.string()).optional(),
clientIds: z.array(z.string()).optional(),
chapters: z.array(z.string()).optional(),
eids: z.array(z.string()).optional(),
countryCodes: z.array(z.string()).optional(),
});
export const TimelineProjectContextDetailSchema = z.object({
projectId: z.string(),
startDate: z.string().optional(),
endDate: z.string().optional(),
durationDays: z.number().int().min(1).max(366).optional(),
});
export const TimelineProjectIdSchema = z.object({
projectId: z.string(),
});
@@ -1,6 +1,7 @@
import { buildSplitAllocationReadModel } from "@capakraken/application";
import type { PrismaClient } from "@capakraken/db";
import { z } from "zod";
import { TimelineWindowFiltersSchema } from "./timeline-read-schema-support.js";
import { loadTimelineEntryRecords } from "./timeline-entry-query-support.js";
export {
buildSelfServiceTimelineInput,
@@ -30,40 +31,6 @@ export type TimelineEntriesFilters = {
countryCodes?: string[] | undefined;
};
export const TimelineWindowFiltersSchema = z.object({
startDate: z.coerce.date(),
endDate: z.coerce.date(),
resourceIds: z.array(z.string()).optional(),
projectIds: z.array(z.string()).optional(),
clientIds: z.array(z.string()).optional(),
chapters: z.array(z.string()).optional(),
eids: z.array(z.string()).optional(),
countryCodes: z.array(z.string()).optional(),
});
export const TimelineDetailFiltersSchema = z.object({
startDate: z.string().optional(),
endDate: z.string().optional(),
durationDays: z.number().int().min(1).max(366).optional(),
resourceIds: z.array(z.string()).optional(),
projectIds: z.array(z.string()).optional(),
clientIds: z.array(z.string()).optional(),
chapters: z.array(z.string()).optional(),
eids: z.array(z.string()).optional(),
countryCodes: z.array(z.string()).optional(),
});
export const TimelineProjectContextDetailSchema = z.object({
projectId: z.string(),
startDate: z.string().optional(),
endDate: z.string().optional(),
durationDays: z.number().int().min(1).max(366).optional(),
});
export const TimelineProjectIdSchema = z.object({
projectId: z.string(),
});
type TimelineWindowFiltersInput = z.infer<typeof TimelineWindowFiltersSchema>;
export function getAssignmentResourceIds(