From 9784eb4f4afa530fbdd0e41233aa8a262faf0618 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 d5f5ec12..5a46f79d 100644 --- a/packages/backend/src/registry.ts +++ b/packages/backend/src/registry.ts @@ -16,7 +16,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'); @@ -446,7 +446,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 bd14804b..8c45edba 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; @@ -665,11 +665,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) { @@ -680,7 +676,7 @@ export class Service { appName: repo, repository: repoUrl, environmentVariables: environmentVariablesObj, - dns: `${newDeployment.project.name}`, + dns: domain?.[0]?.name ?? `${newDeployment.project.name}`, lrn: deployer!.deployerLrn!, apiUrl: deployer!.deployerApiUrl!, payment: data.project.txHash, @@ -698,7 +694,7 @@ export class Service { lrn: deployer!.deployerLrn!, apiUrl: deployer!.deployerApiUrl!, environmentVariables: environmentVariablesObj, - dns: dns || `${newDeployment.project.name}-${newDeployment.id}`, + dns: `${newDeployment.project.name}-${newDeployment.id}`, payment: data.project.txHash, auctionId: data.project.auctionId, requesterAddress: address, 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