9bd3781c03
Cast Zod schemas with .refine()/.superRefine() to z.ZodType<InferredType> at the procedure level. This short-circuits TypeScript's deep type recursion through tRPC's middleware chain, eliminating 4 of 5 @ts-expect-error TS2589 suppressions in web components (VacationModal, ProjectModal, UsersClient, CountriesClient). Applied same pattern to allocation, timeline, staffing, dashboard, project, and resource query/mutation procedures to reduce client-side type depth. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
import {
|
|
adminProcedure,
|
|
createTRPCRouter,
|
|
protectedProcedure,
|
|
resourceOverviewProcedure,
|
|
} from "../trpc.js";
|
|
import {
|
|
countryIdInputSchema,
|
|
countryIdentifierInputSchema,
|
|
countryListInputSchema,
|
|
countryUpdateInputSchema,
|
|
createCountry,
|
|
createMetroCity,
|
|
deleteMetroCity,
|
|
getCountryById,
|
|
getCountryByIdentifier,
|
|
getMetroCityById,
|
|
listCountries,
|
|
metroCityIdInputSchema,
|
|
metroCityUpdateInputSchema,
|
|
resolveCountryByIdentifier,
|
|
updateCountry,
|
|
updateMetroCity,
|
|
} from "./country-procedure-support.js";
|
|
import { CreateCountrySchema, CreateMetroCitySchema } from "@capakraken/shared";
|
|
import type { CreateCountryInput } from "@capakraken/shared";
|
|
import type { z } from "zod";
|
|
|
|
export const countryRouter = createTRPCRouter({
|
|
list: protectedProcedure
|
|
.input(countryListInputSchema)
|
|
.query(({ ctx, input }) => listCountries(ctx, input)),
|
|
|
|
resolveByIdentifier: protectedProcedure
|
|
.input(countryIdentifierInputSchema)
|
|
.query(({ ctx, input }) => resolveCountryByIdentifier(ctx, input)),
|
|
|
|
getByIdentifier: resourceOverviewProcedure
|
|
.input(countryIdentifierInputSchema)
|
|
.query(({ ctx, input }) => getCountryByIdentifier(ctx, input)),
|
|
|
|
getById: resourceOverviewProcedure
|
|
.input(countryIdInputSchema)
|
|
.query(({ ctx, input }) => getCountryById(ctx, input)),
|
|
|
|
getCityById: protectedProcedure
|
|
.input(metroCityIdInputSchema)
|
|
.query(({ ctx, input }) => getMetroCityById(ctx, input)),
|
|
|
|
create: adminProcedure
|
|
.input(
|
|
CreateCountrySchema as z.ZodType<
|
|
CreateCountryInput,
|
|
z.ZodTypeDef,
|
|
z.input<typeof CreateCountrySchema>
|
|
>,
|
|
)
|
|
.mutation(({ ctx, input }) => createCountry(ctx, input)),
|
|
|
|
update: adminProcedure
|
|
.input(countryUpdateInputSchema)
|
|
.mutation(({ ctx, input }) => updateCountry(ctx, input)),
|
|
|
|
// ─── Metro City ─────────────────────────────────────────────
|
|
|
|
createCity: adminProcedure
|
|
.input(CreateMetroCitySchema)
|
|
.mutation(({ ctx, input }) => createMetroCity(ctx, input)),
|
|
|
|
updateCity: adminProcedure
|
|
.input(metroCityUpdateInputSchema)
|
|
.mutation(({ ctx, input }) => updateMetroCity(ctx, input)),
|
|
|
|
deleteCity: adminProcedure
|
|
.input(metroCityIdInputSchema)
|
|
.mutation(({ ctx, input }) => deleteMetroCity(ctx, input)),
|
|
});
|