From 27256c609ad5cb24b6ebc4548af86a541e5bad3b Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Tue, 30 Jul 2024 23:31:05 -0600 Subject: [PATCH] refactor: add validations in domains --- .../general/show-converted-compose.tsx | 29 +++++++++++++++++-- apps/dokploy/server/api/routers/compose.ts | 17 ++++++++++- apps/dokploy/server/utils/docker/domain.ts | 3 +- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx b/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx index d57ab9d7..e0476d19 100644 --- a/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx +++ b/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx @@ -12,6 +12,7 @@ import { import { api } from "@/utils/api"; import { Puzzle } from "lucide-react"; import { useState } from "react"; +import { toast } from "sonner"; interface Props { composeId: string; @@ -21,10 +22,17 @@ export const ShowConvertedCompose = ({ composeId }: Props) => { const [isOpen, setIsOpen] = useState(false); const { data: compose, - isLoading, error, isError, - } = api.compose.getConvertedCompose.useQuery({ composeId }); + refetch, + } = api.compose.getConvertedCompose.useQuery( + { composeId }, + { + retry: false, + }, + ); + + const { mutateAsync, isLoading } = api.compose.fetchSourceType.useMutation(); return ( @@ -43,6 +51,23 @@ export const ShowConvertedCompose = ({ composeId }: Props) => { {isError && {error?.message}} +
 					
 				
diff --git a/apps/dokploy/server/api/routers/compose.ts b/apps/dokploy/server/api/routers/compose.ts index 1c0a9e61..8acf9f01 100644 --- a/apps/dokploy/server/api/routers/compose.ts +++ b/apps/dokploy/server/api/routers/compose.ts @@ -16,7 +16,7 @@ import { import { myQueue } from "@/server/queues/queueSetup"; import { createCommand } from "@/server/utils/builders/compose"; import { randomizeComposeFile } from "@/server/utils/docker/compose"; -import { addDomainToCompose } from "@/server/utils/docker/domain"; +import { addDomainToCompose, cloneCompose } from "@/server/utils/docker/domain"; import { removeComposeDirectory } from "@/server/utils/filesystem/directory"; import { templates } from "@/templates/templates"; import type { TemplatesKeys } from "@/templates/types/templates-data.type"; @@ -122,6 +122,21 @@ export const composeRouter = createTRPCRouter({ .query(async ({ input }) => { return await loadServices(input.composeId, input.type); }), + fetchSourceType: protectedProcedure + .input(apiFindCompose) + .mutation(async ({ input }) => { + try { + const compose = await findComposeById(input.composeId); + await cloneCompose(compose); + return compose.sourceType; + } catch (err) { + throw new TRPCError({ + code: "BAD_REQUEST", + message: "Error to fetch source type", + cause: err, + }); + } + }), randomizeCompose: protectedProcedure .input(apiRandomizeCompose) diff --git a/apps/dokploy/server/utils/docker/domain.ts b/apps/dokploy/server/utils/docker/domain.ts index 8efce164..44be498f 100644 --- a/apps/dokploy/server/utils/docker/domain.ts +++ b/apps/dokploy/server/utils/docker/domain.ts @@ -71,9 +71,8 @@ export const addDomainToCompose = async ( if (!serviceName) { throw new Error("Service name not found"); } - if (!result?.services?.[serviceName]) { - throw new Error("Service not found"); + throw new Error(`The service ${serviceName} not found in the compose`); } if (!result.services[serviceName].labels) { result.services[serviceName].labels = [];