From c2bf37948504522430456f83ef58825ae1f266c7 Mon Sep 17 00:00:00 2001 From: matthew Date: Sat, 8 Oct 2022 23:42:00 +0400 Subject: [PATCH] add first available date --- searching-front/services/domain-watcher.ts | 31 ++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/searching-front/services/domain-watcher.ts b/searching-front/services/domain-watcher.ts index e4f7055..3941848 100644 --- a/searching-front/services/domain-watcher.ts +++ b/searching-front/services/domain-watcher.ts @@ -19,14 +19,23 @@ interface SearchNFTItemsParams { } const getFullUrl = (dmn: string) => `http://${dmn}` -const upsertDmn = async (dmn: string, available: boolean) => - await db.nftDomain.upsert({ +const upsertDmn = async (dmn: string, available: boolean) => { + const domainFromDB = await db.nftDomain.findFirst({where:{address: getFullUrl(dmn)}}) + const shouldUpdateFirstAvailableDate = !domainFromDB?.firstAvailableDate && available; + + const upsertObj = { available, address: getFullUrl(dmn) }; + if(shouldUpdateFirstAvailableDate){ + upsertObj.firstAvailableDate = new Date(); + } + return await db.nftDomain.upsert({ where: { address: getFullUrl(dmn), }, - update: { available, address: getFullUrl(dmn) }, - create: { available, address: getFullUrl(dmn) }, + update: upsertObj, + create: upsertObj, }) +} + const wait = (time: number) => new Promise((resolve) => setTimeout(() => resolve(true), time)) @@ -76,30 +85,36 @@ const main = async () => limit: portion, offset: count * portion, }) - if (nftItems.length) { + console.time('fetchDomain') + const promises1: Promise[] = [] for (let i = 0; i < nftItems.length; i++) { const nftDomainItem = nftItems[i] if (nftDomainItem.dns) { - fetchTonSite(nftDomainItem.dns) + + promises1.push(fetchTonSite(nftDomainItem.dns) .then(async (dmn) => { console.log("success dmn", dmn) upsertDmn(dmn, true) }) .catch((dmn) => { upsertDmn(dmn,false) - }) + })) + } } count++ + await Promise.all(promises1) + console.timeEnd('fetchDomain') continue } break } + console.log("Finish fetch nft") setTimeout(() => { resolve(true) - }, 10000) + }, 3000) }) export default main