HotTRDealsBackend/services/sellerLookup.service.js
2026-02-04 06:39:10 +00:00

47 lines
1.2 KiB
JavaScript

const { findSellerByDomain } = require("../db/seller.db")
const { getSellerById, getSellerIdByDomain } = require("./redis/sellerCache.service")
function normalizeDomain(hostname) {
return hostname.replace(/^www\./, "")
}
async function findSellerFromLink(url) {
let hostname
try {
hostname = new URL(url).hostname
} catch {
return null
}
const domain = normalizeDomain(hostname)
const cachedSellerId = await getSellerIdByDomain(domain)
if (cachedSellerId) {
const cachedSeller = await getSellerById(cachedSellerId)
if (cachedSeller) return cachedSeller
}
const seller = await findSellerByDomain(domain)
if (seller) return seller
const domainParts = domain.split(".")
for (let i = 1; i <= domainParts.length - 2; i += 1) {
const parentDomain = domainParts.slice(i).join(".")
const cachedParentId = await getSellerIdByDomain(parentDomain)
if (cachedParentId) {
const cachedParent = await getSellerById(cachedParentId)
if (cachedParent) return cachedParent
}
const parentSeller = await findSellerByDomain(parentDomain)
if (parentSeller) return parentSeller
}
return null
}
module.exports = {
findSellerFromLink,
}