refactor: retrieve the correct names when adding a prefix

This commit is contained in:
Mauricio Siu 2024-09-03 23:22:24 -06:00
parent a3be030fac
commit 9c89208d83
4 changed files with 22 additions and 8 deletions

View File

@ -152,12 +152,8 @@ export const composeRouter = createTRPCRouter({
const compose = await findComposeById(input.composeId);
const domains = await findDomainsByComposeId(input.composeId);
let composeFile = await addDomainToCompose(compose, domains);
const composeFile = await addDomainToCompose(compose, domains);
if (compose.randomize && composeFile && compose.prefix) {
const result = randomizeSpecificationFile(composeFile, compose.prefix);
composeFile = result;
}
return dump(composeFile, {
lineWidth: 1000,
});

View File

@ -19,6 +19,7 @@ import { eq } from "drizzle-orm";
import { getDokployUrl } from "./admin";
import { createDeploymentCompose, updateDeploymentStatus } from "./deployment";
import { validUniqueServerAppName } from "./project";
import { randomizeSpecificationFile } from "@/server/utils/docker/compose";
export type Compose = typeof compose.$inferSelect;
@ -117,7 +118,16 @@ export const loadServices = async (
await cloneCompose(compose);
}
const composeData = await loadDockerCompose(compose);
let composeData = await loadDockerCompose(compose);
if (compose.randomize && composeData) {
const randomizedCompose = randomizeSpecificationFile(
composeData,
compose.prefix,
);
composeData = randomizedCompose;
}
if (!composeData?.services) {
throw new TRPCError({
code: "NOT_FOUND",

View File

@ -29,8 +29,11 @@ export const randomizeComposeFile = async (
export const randomizeSpecificationFile = (
composeSpec: ComposeSpecification,
prefix: string,
prefix?: string,
) => {
if (!prefix) {
return composeSpec;
}
const newComposeFile = addPrefixToAllProperties(composeSpec, prefix);
return newComposeFile;
};

View File

@ -94,12 +94,17 @@ export const addDomainToCompose = async (
domains: Domain[],
) => {
const { appName } = compose;
const result = await loadDockerCompose(compose);
let result = await loadDockerCompose(compose);
if (!result || domains.length === 0) {
return null;
}
if (compose.randomize) {
const randomized = randomizeSpecificationFile(result, compose.prefix);
result = randomized;
}
for (const domain of domains) {
const { serviceName, https } = domain;
if (!serviceName) {