diff --git a/apps/api/prisma/migrations/20220806090621_fqdn_not_unique_anymore/migration.sql b/apps/api/prisma/migrations/20220806090621_fqdn_not_unique_anymore/migration.sql new file mode 100644 index 000000000..f1eab666b --- /dev/null +++ b/apps/api/prisma/migrations/20220806090621_fqdn_not_unique_anymore/migration.sql @@ -0,0 +1,2 @@ +-- DropIndex +DROP INDEX "Application_fqdn_key"; diff --git a/apps/api/prisma/schema.prisma b/apps/api/prisma/schema.prisma index 3b68829e3..61ea5ca7f 100644 --- a/apps/api/prisma/schema.prisma +++ b/apps/api/prisma/schema.prisma @@ -82,7 +82,7 @@ model TeamInvitation { model Application { id String @id @default(cuid()) name String - fqdn String? @unique + fqdn String? repository String? configHash String? branch String? diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index 7cf27a22f..330f93e47 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -318,12 +318,12 @@ export async function isDomainConfigured({ id, fqdn, checkOwn = false, - dockerId = undefined + remoteIpAddress = undefined }: { id: string; fqdn: string; checkOwn?: boolean; - dockerId?: string; + remoteIpAddress?: string; }): Promise { const domain = getDomain(fqdn); const nakedDomain = domain.replace('www.', ''); @@ -335,7 +335,7 @@ export async function isDomainConfigured({ ], id: { not: id }, destinationDocker: { - id: dockerId + remoteIpAddress, } }, select: { fqdn: true } @@ -350,7 +350,7 @@ export async function isDomainConfigured({ ], id: { not: checkOwn ? undefined : id }, destinationDocker: { - id: dockerId + remoteIpAddress } }, select: { fqdn: true } diff --git a/apps/api/src/routes/api/v1/applications/handlers.ts b/apps/api/src/routes/api/v1/applications/handlers.ts index 838f7f9b4..b3ef49133 100644 --- a/apps/api/src/routes/api/v1/applications/handlers.ts +++ b/apps/api/src/routes/api/v1/applications/handlers.ts @@ -387,7 +387,7 @@ export async function checkDNS(request: FastifyRequest) { const { destinationDocker: { id: dockerId, remoteIpAddress, remoteEngine }, exposePort: configuredPort } = await prisma.application.findUnique({ where: { id }, include: { destinationDocker: true } }) const { isDNSCheckEnabled } = await prisma.setting.findFirst({}); - const found = await isDomainConfigured({ id, fqdn, dockerId }); + const found = await isDomainConfigured({ id, fqdn, remoteIpAddress }); if (found) { throw { status: 500, message: `Domain ${getDomain(fqdn).replace('www.', '')} is already in use!` } } diff --git a/apps/api/src/routes/api/v1/services/handlers.ts b/apps/api/src/routes/api/v1/services/handlers.ts index cb2b2abb7..60b29981b 100644 --- a/apps/api/src/routes/api/v1/services/handlers.ts +++ b/apps/api/src/routes/api/v1/services/handlers.ts @@ -368,13 +368,13 @@ export async function checkService(request: FastifyRequest) { const { destinationDocker: { id: dockerId, remoteIpAddress, remoteEngine }, exposePort: configuredPort } = await prisma.service.findUnique({ where: { id }, include: { destinationDocker: true } }) const { isDNSCheckEnabled } = await prisma.setting.findFirst({}); - let found = await isDomainConfigured({ id, fqdn, dockerId }); + let found = await isDomainConfigured({ id, fqdn, remoteIpAddress }); if (found) { throw { status: 500, message: `Domain ${getDomain(fqdn).replace('www.', '')} is already in use!` } } if (otherFqdns && otherFqdns.length > 0) { for (const ofqdn of otherFqdns) { - found = await isDomainConfigured({ id, fqdn: ofqdn, dockerId }); + found = await isDomainConfigured({ id, fqdn: ofqdn,remoteIpAddress }); if (found) { throw { status: 500, message: `Domain ${getDomain(ofqdn).replace('www.', '')} is already in use!` } } diff --git a/apps/ui/src/routes/applications/[id]/_Setting.svelte b/apps/ui/src/routes/applications/[id]/_Setting.svelte index d1cf55dc0..eaaaf17e8 100644 --- a/apps/ui/src/routes/applications/[id]/_Setting.svelte +++ b/apps/ui/src/routes/applications/[id]/_Setting.svelte @@ -23,7 +23,6 @@ class="flex justify-center" >