refactor(api): extract timeline entry read builders
This commit is contained in:
@@ -2,14 +2,12 @@ import { z } from "zod";
|
||||
import { getAnonymizationDirectory } from "../lib/anonymization.js";
|
||||
import { controllerProcedure, protectedProcedure } from "../trpc.js";
|
||||
import {
|
||||
anonymizeResourceOnEntry,
|
||||
buildSelfServiceTimelineInput,
|
||||
buildTimelineEntriesDetailInput,
|
||||
buildTimelineEntriesDetailResponse,
|
||||
buildTimelineEntriesViewResponse,
|
||||
createEmptyTimelineEntriesView,
|
||||
createTimelineDateRange,
|
||||
createTimelineFilters,
|
||||
fmtDate,
|
||||
loadTimelineEntriesReadModel,
|
||||
summarizeTimelineEntries,
|
||||
TimelineWindowFiltersSchema,
|
||||
} from "./timeline-read-shared.js";
|
||||
import {
|
||||
@@ -24,7 +22,7 @@ export const timelineEntryReadProcedures = {
|
||||
.query(async ({ ctx, input }) => {
|
||||
const readModel = await loadTimelineEntriesReadModel(ctx.db, input);
|
||||
const directory = await getAnonymizationDirectory(ctx.db);
|
||||
return readModel.allocations.map((allocation) => anonymizeResourceOnEntry(allocation, directory));
|
||||
return buildTimelineEntriesViewResponse(readModel, directory).allocations;
|
||||
}),
|
||||
|
||||
getEntriesView: controllerProcedure
|
||||
@@ -35,11 +33,7 @@ export const timelineEntryReadProcedures = {
|
||||
getAnonymizationDirectory(ctx.db),
|
||||
]);
|
||||
|
||||
return {
|
||||
...readModel,
|
||||
allocations: readModel.allocations.map((allocation) => anonymizeResourceOnEntry(allocation, directory)),
|
||||
assignments: readModel.assignments.map((assignment) => anonymizeResourceOnEntry(assignment, directory)),
|
||||
};
|
||||
return buildTimelineEntriesViewResponse(readModel, directory);
|
||||
}),
|
||||
|
||||
getMyEntriesView: protectedProcedure
|
||||
@@ -55,11 +49,7 @@ export const timelineEntryReadProcedures = {
|
||||
getAnonymizationDirectory(ctx.db),
|
||||
]);
|
||||
|
||||
return {
|
||||
...readModel,
|
||||
allocations: readModel.allocations.map((allocation) => anonymizeResourceOnEntry(allocation, directory)),
|
||||
assignments: readModel.assignments.map((assignment) => anonymizeResourceOnEntry(assignment, directory)),
|
||||
};
|
||||
return buildTimelineEntriesViewResponse(readModel, directory);
|
||||
}),
|
||||
|
||||
getEntriesDetail: controllerProcedure
|
||||
@@ -77,9 +67,7 @@ export const timelineEntryReadProcedures = {
|
||||
}),
|
||||
)
|
||||
.query(async ({ ctx, input }) => {
|
||||
const { startDate, endDate } = createTimelineDateRange(input);
|
||||
const filters = createTimelineFilters(input);
|
||||
const timelineInput = { ...filters, startDate, endDate };
|
||||
const { period, filters, timelineInput } = buildTimelineEntriesDetailInput(input);
|
||||
|
||||
const [readModel, directory] = await Promise.all([
|
||||
loadTimelineEntriesReadModel(ctx.db, timelineInput),
|
||||
@@ -92,20 +80,13 @@ export const timelineEntryReadProcedures = {
|
||||
);
|
||||
const formattedHolidayOverlays = formatHolidayOverlays(holidayOverlays);
|
||||
|
||||
return {
|
||||
period: {
|
||||
startDate: fmtDate(startDate),
|
||||
endDate: fmtDate(endDate),
|
||||
},
|
||||
return buildTimelineEntriesDetailResponse({
|
||||
period,
|
||||
filters,
|
||||
summary: {
|
||||
...summarizeTimelineEntries(readModel),
|
||||
...summarizeHolidayOverlays(formattedHolidayOverlays),
|
||||
},
|
||||
allocations: readModel.allocations.map((allocation) => anonymizeResourceOnEntry(allocation, directory)),
|
||||
demands: readModel.demands,
|
||||
assignments: readModel.assignments.map((assignment) => anonymizeResourceOnEntry(assignment, directory)),
|
||||
readModel,
|
||||
directory,
|
||||
holidayOverlays: formattedHolidayOverlays,
|
||||
};
|
||||
holidaySummary: summarizeHolidayOverlays(formattedHolidayOverlays),
|
||||
});
|
||||
}),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user