mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-06-23 16:15:21 +02:00
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import {
|
|
createMount,
|
|
deleteMount,
|
|
findApplicationById,
|
|
findMountById,
|
|
findMountOrganizationId,
|
|
getServiceContainer,
|
|
updateMount,
|
|
} from "@dokploy/server";
|
|
import { TRPCError } from "@trpc/server";
|
|
import { z } from "zod";
|
|
import {
|
|
apiCreateMount,
|
|
apiFindOneMount,
|
|
apiRemoveMount,
|
|
apiUpdateMount,
|
|
} from "@/server/db/schema";
|
|
import { createTRPCRouter, protectedProcedure } from "../trpc";
|
|
|
|
export const mountRouter = createTRPCRouter({
|
|
create: protectedProcedure
|
|
.input(apiCreateMount)
|
|
.mutation(async ({ input }) => {
|
|
await createMount(input);
|
|
return true;
|
|
}),
|
|
remove: protectedProcedure
|
|
.input(apiRemoveMount)
|
|
.mutation(async ({ input, ctx }) => {
|
|
const organizationId = await findMountOrganizationId(input.mountId);
|
|
if (organizationId !== ctx.session.activeOrganizationId) {
|
|
throw new TRPCError({
|
|
code: "UNAUTHORIZED",
|
|
message: "You are not authorized to delete this mount",
|
|
});
|
|
}
|
|
return await deleteMount(input.mountId);
|
|
}),
|
|
|
|
one: protectedProcedure
|
|
.input(apiFindOneMount)
|
|
.query(async ({ input, ctx }) => {
|
|
const organizationId = await findMountOrganizationId(input.mountId);
|
|
if (organizationId !== ctx.session.activeOrganizationId) {
|
|
throw new TRPCError({
|
|
code: "UNAUTHORIZED",
|
|
message: "You are not authorized to access this mount",
|
|
});
|
|
}
|
|
return await findMountById(input.mountId);
|
|
}),
|
|
update: protectedProcedure
|
|
.input(apiUpdateMount)
|
|
.mutation(async ({ input, ctx }) => {
|
|
const organizationId = await findMountOrganizationId(input.mountId);
|
|
if (organizationId !== ctx.session.activeOrganizationId) {
|
|
throw new TRPCError({
|
|
code: "UNAUTHORIZED",
|
|
message: "You are not authorized to update this mount",
|
|
});
|
|
}
|
|
return await updateMount(input.mountId, input);
|
|
}),
|
|
allNamedByApplicationId: protectedProcedure
|
|
.input(z.object({ applicationId: z.string().min(1) }))
|
|
.query(async ({ input }) => {
|
|
const app = await findApplicationById(input.applicationId);
|
|
const container = await getServiceContainer(app.appName, app.serverId);
|
|
const mounts = container?.Mounts.filter(
|
|
(mount) => mount.Type === "volume" && mount.Source !== "",
|
|
);
|
|
return mounts;
|
|
}),
|
|
});
|