Files
CapaKraken/packages/api/src/router/rate-card.ts
T

83 lines
3.0 KiB
TypeScript

import { CreateRateCardSchema } from "@capakraken/shared";
import { createTRPCRouter, controllerProcedure, managerProcedure } from "../trpc.js";
import {
addRateCardLine,
createRateCard,
deactivateRateCard,
deleteRateCardLine,
getRateCardById,
listRateCards,
lookupRateCardBestMatch,
rateCardAddLineInputSchema,
rateCardByIdInputSchema,
rateCardDeleteLineInputSchema,
rateCardListInputSchema,
rateCardLookupBestMatchInputSchema,
rateCardReplaceLinesInputSchema,
rateCardResolveBestRateInputSchema,
rateCardResolveLineInputSchema,
rateCardUpdateInputSchema,
rateCardUpdateLineInputSchema,
replaceRateCardLines,
resolveRateCard,
resolveRateCardLine,
updateRateCard,
updateRateCardLine,
} from "./rate-card-procedure-support.js";
export const rateCardRouter = createTRPCRouter({
list: controllerProcedure
.input(rateCardListInputSchema)
.query(({ ctx, input }) => listRateCards(ctx, input)),
getById: controllerProcedure
.input(rateCardByIdInputSchema)
.query(({ ctx, input }) => getRateCardById(ctx, input)),
lookupBestMatch: controllerProcedure
.input(rateCardLookupBestMatchInputSchema)
.query(({ ctx, input }) => lookupRateCardBestMatch(ctx, input)),
resolveBestRate: controllerProcedure
.input(rateCardResolveBestRateInputSchema)
.query(({ ctx, input }) => resolveRateCard(ctx, input)),
create: managerProcedure
.input(CreateRateCardSchema)
.mutation(({ ctx, input }) => createRateCard(ctx, input)),
update: managerProcedure
.input(rateCardUpdateInputSchema)
.mutation(({ ctx, input }) => updateRateCard(ctx, input)),
deactivate: managerProcedure
.input(rateCardByIdInputSchema)
.mutation(({ ctx, input }) => deactivateRateCard(ctx, input)),
// ─── Line CRUD ─────────────────────────────────────────────────────────────
addLine: managerProcedure
.input(rateCardAddLineInputSchema)
.mutation(({ ctx, input }) => addRateCardLine(ctx, input)),
updateLine: managerProcedure
.input(rateCardUpdateLineInputSchema)
.mutation(({ ctx, input }) => updateRateCardLine(ctx, input)),
deleteLine: managerProcedure
.input(rateCardDeleteLineInputSchema)
.mutation(({ ctx, input }) => deleteRateCardLine(ctx, input)),
// ─── Batch operations ──────────────────────────────────────────────────────
replaceLines: managerProcedure
.input(rateCardReplaceLinesInputSchema)
.mutation(({ ctx, input }) => replaceRateCardLines(ctx, input)),
// ─── Rate resolution ───────────────────────────────────────────────────────
resolveRateLine: controllerProcedure
.input(rateCardResolveLineInputSchema)
.query(({ ctx, input }) => resolveRateCardLine(ctx, input)),
});