diff --git a/pages/api/domains.ts b/pages/api/domains.ts index 5d85e9c..39274d8 100644 --- a/pages/api/domains.ts +++ b/pages/api/domains.ts @@ -4,6 +4,7 @@ import Domain from '../../database/models/domain'; import Keyword from '../../database/models/keyword'; import getdomainStats from '../../utils/domains'; import verifyUser from '../../utils/verifyUser'; +import { removeLocalSCData } from '../../utils/searchConsole'; type DomainsGetRes = { domains: DomainType[] @@ -18,6 +19,7 @@ type DomainsAddResponse = { type DomainsDeleteRes = { domainRemoved: number, keywordsRemoved: number, + SCDataRemoved: boolean, error?: string|null, } @@ -87,19 +89,17 @@ const addDomain = async (req: NextApiRequest, res: NextApiResponse) => { if (!req.query.domain && typeof req.query.domain !== 'string') { - return res.status(400).json({ domainRemoved: 0, keywordsRemoved: 0, error: 'Domain is Required!' }); + return res.status(400).json({ domainRemoved: 0, keywordsRemoved: 0, SCDataRemoved: false, error: 'Domain is Required!' }); } try { const { domain } = req.query || {}; const removedDomCount: number = await Domain.destroy({ where: { domain } }); const removedKeywordCount: number = await Keyword.destroy({ where: { domain } }); - return res.status(200).json({ - domainRemoved: removedDomCount, - keywordsRemoved: removedKeywordCount, - }); + const SCDataRemoved = await removeLocalSCData(domain as string); + return res.status(200).json({ domainRemoved: removedDomCount, keywordsRemoved: removedKeywordCount, SCDataRemoved }); } catch (error) { console.log('[ERROR] Deleting Domain: ', req.query.domain, error); - return res.status(400).json({ domainRemoved: 0, keywordsRemoved: 0, error: 'Error Deleting Domain' }); + return res.status(400).json({ domainRemoved: 0, keywordsRemoved: 0, SCDataRemoved: false, error: 'Error Deleting Domain' }); } }; diff --git a/utils/searchConsole.ts b/utils/searchConsole.ts index c4b34e7..eee7f3a 100644 --- a/utils/searchConsole.ts +++ b/utils/searchConsole.ts @@ -1,5 +1,5 @@ import { auth, searchconsole_v1 } from '@googleapis/searchconsole'; -import { readFile, writeFile } from 'fs/promises'; +import { readFile, writeFile, unlink } from 'fs/promises'; import { getCountryCodeFromAlphaThree } from './countries'; export type SCDomainFetchError = { @@ -189,4 +189,19 @@ export const updateLocalSCData = async (domain:string, scDomainData?:SCDomainDat return scDomainData || emptyData; }; +/** + * The function removes the domain-specific Seach Console data stored in a local JSON file. + * @param {string} domain - The `domain` parameter is a string that represents the domain for which the SC data file will be removed. + * @returns {Promise} - Returns true if file was removed, else returns false. + */ +export const removeLocalSCData = async (domain:string): Promise => { + const filePath = `${process.cwd()}/data/SC_${domain}.json`; + try { + await unlink(filePath); + return true; + } catch (error) { + return false; + } +}; + export default fetchSearchConsoleData;