diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index a55aa1c7b..3f09478ca 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -715,7 +715,7 @@ export async function stopTraefikProxy( } export async function listSettings(): Promise { - return await prisma.setting.findFirst({}); + return await prisma.setting.findUnique({ where: { id: '0' } }); } export function generateToken() { diff --git a/apps/api/src/routes/api/v1/settings/handlers.ts b/apps/api/src/routes/api/v1/settings/handlers.ts index c835f3020..4b2af55eb 100644 --- a/apps/api/src/routes/api/v1/settings/handlers.ts +++ b/apps/api/src/routes/api/v1/settings/handlers.ts @@ -2,7 +2,7 @@ import { promises as dns } from 'dns'; import { X509Certificate } from 'node:crypto'; import * as Sentry from '@sentry/node'; import type { FastifyReply, FastifyRequest } from 'fastify'; -import { asyncExecShell, checkDomainsIsValidInDNS, decrypt, encrypt, errorHandler, isDev, isDNSValid, isDomainConfigured, listSettings, prisma, sentryDSN, version } from '../../../../lib/common'; +import { asyncExecShell, checkDomainsIsValidInDNS, decrypt, encrypt, errorHandler, getDomain, isDev, isDNSValid, isDomainConfigured, listSettings, prisma, sentryDSN, version } from '../../../../lib/common'; import { AddDefaultRegistry, CheckDNS, CheckDomain, DeleteDomain, OnlyIdInBody, SaveSettings, SaveSSHKey, SetDefaultRegistry } from './types'; @@ -68,10 +68,26 @@ export async function saveSettings(request: FastifyRequest, reply: DNSServers, proxyDefaultRedirect } = request.body - const { id } = await listSettings(); + const { id, previewSeparator: SetPreviewSeparator } = await listSettings(); if (numberOfDockerImagesKeptLocally) { numberOfDockerImagesKeptLocally = Number(numberOfDockerImagesKeptLocally) } + if (previewSeparator == '') { + previewSeparator = '.' + } + if (SetPreviewSeparator != previewSeparator) { + const applications = await prisma.application.findMany({ where: { previewApplication: { some: { id: { not: undefined } } } }, include: { previewApplication: true } }) + for (const application of applications) { + for (const preview of application.previewApplication) { + const { protocol } = new URL(preview.customDomain) + const { pullmergeRequestId } = preview + const { fqdn } = application + const newPreviewDomain = `${protocol}//${pullmergeRequestId}${previewSeparator}${getDomain(fqdn)}` + await prisma.previewApplication.update({ where: { id: preview.id }, data: { customDomain: newPreviewDomain } }) + } + } + } + await prisma.setting.update({ where: { id }, data: { previewSeparator, numberOfDockerImagesKeptLocally, doNotTrack, isRegistrationEnabled, dualCerts, isAutoUpdateEnabled, isDNSCheckEnabled, DNSServers, isAPIDebuggingEnabled } diff --git a/apps/ui/src/routes/settings/coolify.svelte b/apps/ui/src/routes/settings/coolify.svelte index 5356849b7..46f4ac17a 100644 --- a/apps/ui/src/routes/settings/coolify.svelte +++ b/apps/ui/src/routes/settings/coolify.svelte @@ -166,12 +166,15 @@ } if (proxyDefaultRedirect !== settings.proxyDefaultRedirect) { await post(`/settings`, { proxyDefaultRedirect }); + settings.proxyDefaultRedirect = proxyDefaultRedirect; } if (numberOfDockerImagesKeptLocally !== settings.numberOfDockerImagesKeptLocally) { await post(`/settings`, { numberOfDockerImagesKeptLocally }); + settings.numberOfDockerImagesKeptLocally = numberOfDockerImagesKeptLocally; } if (previewSeparator !== settings.previewSeparator) { await post(`/settings`, { previewSeparator }); + settings.previewSeparator = previewSeparator; } if (minPort !== settings.minPort || maxPort !== settings.maxPort) { await post(`/settings`, { minPort, maxPort }); @@ -422,7 +425,7 @@
- Preview Domain Seprator + Preview Domain Separator