diff --git a/server/api/routers/registry.ts b/server/api/routers/registry.ts index 9276a5575..ce83c7963 100644 --- a/server/api/routers/registry.ts +++ b/server/api/routers/registry.ts @@ -62,7 +62,7 @@ export const registryRouter = createTRPCRouter({ return true; } catch (error) { console.log("Error Registry:", error); - return error; + return false; } }), diff --git a/server/api/services/registry.ts b/server/api/services/registry.ts index 48077d055..a5b7ec6e3 100644 --- a/server/api/services/registry.ts +++ b/server/api/services/registry.ts @@ -9,28 +9,35 @@ import { } from "@/server/utils/traefik/registry"; import { removeService } from "@/server/utils/docker/utils"; import { initializeRegistry } from "@/server/setup/registry-setup"; +import { execAsync } from "@/server/utils/process/execAsync"; export type Registry = typeof registry.$inferSelect; export const createRegistry = async (input: typeof apiCreateRegistry._type) => { const admin = await findAdmin(); - const newRegistry = await db - .insert(registry) - .values({ - ...input, - adminId: admin.adminId, - }) - .returning() - .then((value) => value[0]); + return await db.transaction(async (tx) => { + const newRegistry = await tx + .insert(registry) + .values({ + ...input, + adminId: admin.adminId, + }) + .returning() + .then((value) => value[0]); - if (!newRegistry) { - throw new TRPCError({ - code: "BAD_REQUEST", - message: "Error input: Inserting registry", - }); - } - return newRegistry; + if (!newRegistry) { + throw new TRPCError({ + code: "BAD_REQUEST", + message: "Error input: Inserting registry", + }); + } + + const loginCommand = `echo ${input.password} | docker login ${input.registryUrl} --username ${input.username} --password-stdin`; + await execAsync(loginCommand); + + return newRegistry; + }); }; export const removeRegistry = async (registryId: string) => {