From dd12369cb2f8509e2585e602a4c281289e195f85 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Thu, 30 Jan 2025 18:19:26 +0530 Subject: [PATCH] Fix DNS records data not getting stored in the DB --- packages/backend/src/registry.ts | 4 ++-- packages/backend/src/service.ts | 20 ++++++++----------- packages/backend/src/types.ts | 4 ++++ .../projects/project/settings/DomainCard.tsx | 4 ++++ .../id/settings/domains/add/Config.tsx | 8 ++++++-- packages/gql-client/src/client.ts | 2 +- packages/gql-client/src/queries.ts | 2 +- 7 files changed, 26 insertions(+), 18 deletions(-) diff --git a/packages/backend/src/registry.ts b/packages/backend/src/registry.ts index 1e2a44de..4009135c 100644 --- a/packages/backend/src/registry.ts +++ b/packages/backend/src/registry.ts @@ -15,7 +15,7 @@ import { ApplicationDeploymentRequest, ApplicationDeploymentRemovalRequest } from './entity/Deployment'; -import { AppDeploymentRecord, AppDeploymentRemovalRecord, AuctionParams, DeployerRecord, DNSRecordAttributes } from './types'; +import { AppDeploymentRecord, AppDeploymentRemovalRecord, AuctionParams, DeployerRecord, DNSRecord, DNSRecordAttributes } from './types'; import { getConfig, getRepoDetails, registryTransactionWithRetry, sleep } from './utils'; const log = debug('snowball:registry'); @@ -435,7 +435,7 @@ export class Registry { /** * Fetch deployment DNS Records by filter */ - async getDNSRecordsByFilter(filter: { [key: string]: any }): Promise { + async getDNSRecordsByFilter(filter: { [key: string]: any }): Promise { return this.registry.queryRecords( { type: DNS_RECORD_TYPE, diff --git a/packages/backend/src/service.ts b/packages/backend/src/service.ts index 7e4773bc..d7f8aae1 100644 --- a/packages/backend/src/service.ts +++ b/packages/backend/src/service.ts @@ -206,11 +206,11 @@ export class Service { }) const dnsRecordData: DNSRecordAttributes = { - name: dnsRecords[0].name, - request: dnsRecords[0].request, - resourceType: dnsRecords[0].resourceType, - value: dnsRecords[0].value, - version: dnsRecords[0].version, + name: dnsRecords[0].attributes.name, + request: dnsRecords[0].attributes.request, + resourceType: dnsRecords[0].attributes.resourceType, + value: dnsRecords[0].attributes.value, + version: dnsRecords[0].attributes.version, } deployment.applicationDeploymentRecordId = record.id; @@ -664,11 +664,7 @@ export class Service { const environmentVariablesObj = await this.getEnvVariables(data.project!.id!); // If a custom domain is present then use that as the DNS in the deployment request - const domain = await this.db.getOldestDomainByProjectId(data.projectId!); - let dns: string | undefined = undefined; - if (domain) { - dns = domain[0].name; - } + const domain = await this.db.getOldestDomainByProjectId(data.project!.id!); // To set project DNS if (data.environment === Environment.Production) { @@ -679,7 +675,7 @@ export class Service { appName: repo, repository: repoUrl, environmentVariables: environmentVariablesObj, - dns: `${newDeployment.project.name}`, + dns: domain?.[0]?.name ?? `${newDeployment.project.name}`, lrn: deployer!.deployerLrn!, payment: data.project.txHash, auctionId: data.project.auctionId @@ -693,7 +689,7 @@ export class Service { repository: repoUrl, lrn: deployer!.deployerLrn!, environmentVariables: environmentVariablesObj, - dns: dns || `${newDeployment.project.name}-${newDeployment.id}`, + dns: `${newDeployment.project.name}-${newDeployment.id}`, payment: data.project.txHash, auctionId: data.project.auctionId }); diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index 96be83d5..91654576 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -72,6 +72,10 @@ export interface AppDeploymentRemovalRecord extends RegistryRecord { attributes: AppDeploymentRemovalRecordAttributes; } +export interface DNSRecord extends RegistryRecord { + attributes: DNSRecordAttributes +} + export interface AddProjectFromTemplateInput { templateOwner: string; templateRepo: string; diff --git a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx index 6edbc4d4..4ffb3cae 100644 --- a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx @@ -100,6 +100,10 @@ const DomainCard = ({ const dnsData = await client.getLatestDNSDataByProjectId(id); + if (!dnsData || !dnsData.value) { + setIPAddress('Not Configured'); + } + setIPAddress(dnsData.value); }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx index bbfe7888..f2c1e6de 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx @@ -74,9 +74,13 @@ const Config = () => { return; } - const dnsData = await client.getLatestDNSDataByProjectId(id); + const dnsData = await client.getLatestDNSDataByProjectId(id); - setIPAddress(dnsData.value); + setIPAddress(dnsData.value); + + if (!dnsData || !dnsData.value) { + setIPAddress("Not Configured") + } }; fetchDNSData(); diff --git a/packages/gql-client/src/client.ts b/packages/gql-client/src/client.ts index 1c84a14a..8432da7b 100644 --- a/packages/gql-client/src/client.ts +++ b/packages/gql-client/src/client.ts @@ -462,6 +462,6 @@ export class GQLClient { }, }); - return data.dnsRecordData; + return data.getLatestDNSDataByProjectId; } } diff --git a/packages/gql-client/src/queries.ts b/packages/gql-client/src/queries.ts index d982b276..592bdca8 100644 --- a/packages/gql-client/src/queries.ts +++ b/packages/gql-client/src/queries.ts @@ -346,7 +346,7 @@ query ($txHash: String!, $amount: String!, $senderAddress: String!) { export const getLatestDNSDataByProjectId = gql` query($projectId: String!) { - dnsRecordData(projectId: $projectId) { + getLatestDNSDataByProjectId(projectId: $projectId) { name value request