Files
CapaKraken/packages/api/src/router/experience-multiplier.ts
T

48 lines
1.8 KiB
TypeScript

import {
ApplyExperienceMultipliersSchema,
CreateExperienceMultiplierSetSchema,
UpdateExperienceMultiplierSetSchema,
} from "@capakraken/shared";
import { createTRPCRouter, controllerProcedure, managerProcedure } from "../trpc.js";
import {
applyExperienceMultiplierRules,
createExperienceMultiplierSet,
deleteExperienceMultiplierSet,
experienceMultiplierIdInputSchema,
experienceMultiplierPreviewInputSchema,
getExperienceMultiplierSetById,
listExperienceMultiplierSets,
previewExperienceMultipliers,
updateExperienceMultiplierSet,
} from "./experience-multiplier-procedure-support.js";
export const experienceMultiplierRouter = createTRPCRouter({
list: controllerProcedure.query(({ ctx }) => listExperienceMultiplierSets(ctx)),
getById: controllerProcedure
.input(experienceMultiplierIdInputSchema)
.query(({ ctx, input }) => getExperienceMultiplierSetById(ctx, input)),
create: managerProcedure
.input(CreateExperienceMultiplierSetSchema)
.mutation(({ ctx, input }) => createExperienceMultiplierSet(ctx, input)),
update: managerProcedure
.input(UpdateExperienceMultiplierSetSchema)
.mutation(({ ctx, input }) => updateExperienceMultiplierSet(ctx, input)),
delete: managerProcedure
.input(experienceMultiplierIdInputSchema)
.mutation(({ ctx, input }) => deleteExperienceMultiplierSet(ctx, input)),
/** Preview the rate adjustment without persisting */
preview: controllerProcedure
.input(experienceMultiplierPreviewInputSchema)
.query(({ ctx, input }) => previewExperienceMultipliers(ctx, input)),
/** Apply multipliers to demand lines on the working version */
applyRules: managerProcedure
.input(ApplyExperienceMultipliersSchema)
.mutation(({ ctx, input }) => applyExperienceMultiplierRules(ctx, input)),
});