import { apiFindAllByApplication, apiFindAllByCompose, apiFindAllByServer, } from "@/server/db/schema"; import { findAllDeploymentsByApplicationId, findAllDeploymentsByComposeId, findAllDeploymentsByServerId, findApplicationById, findComposeById, findServerById, } from "@dokploy/server"; import { TRPCError } from "@trpc/server"; import { createTRPCRouter, protectedProcedure } from "../trpc"; export const deploymentRouter = createTRPCRouter({ all: protectedProcedure .input(apiFindAllByApplication) .query(async ({ input, ctx }) => { const application = await findApplicationById(input.applicationId); if (application.project.adminId !== ctx.user.adminId) { throw new TRPCError({ code: "UNAUTHORIZED", message: "You are not authorized to access this application", }); } return await findAllDeploymentsByApplicationId(input.applicationId); }), allByCompose: protectedProcedure .input(apiFindAllByCompose) .query(async ({ input, ctx }) => { const compose = await findComposeById(input.composeId); if (compose.project.adminId !== ctx.user.adminId) { throw new TRPCError({ code: "UNAUTHORIZED", message: "You are not authorized to access this compose", }); } return await findAllDeploymentsByComposeId(input.composeId); }), allByServer: protectedProcedure .input(apiFindAllByServer) .query(async ({ input, ctx }) => { const server = await findServerById(input.serverId); if (server.adminId !== ctx.user.adminId) { throw new TRPCError({ code: "UNAUTHORIZED", message: "You are not authorized to access this server", }); } return await findAllDeploymentsByServerId(input.serverId); }), });