From b3fcc6ba9a61d494b40afa21363448ed36a9565e Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Wed, 25 Sep 2019 08:32:37 +0200 Subject: [PATCH] return new and existing real estates when saving results --- app/crawler/savers/postgres.js | 47 ++++++++++++++++++---------------- app/helpers/db/realEstate.js | 26 +------------------ 2 files changed, 26 insertions(+), 47 deletions(-) diff --git a/app/crawler/savers/postgres.js b/app/crawler/savers/postgres.js index 28fc635..9ba3391 100644 --- a/app/crawler/savers/postgres.js +++ b/app/crawler/savers/postgres.js @@ -1,9 +1,6 @@ const moment = require("moment"); -const { - bulkUpsertRealEstates, - checkIfAlreadyExist -} = require("../../helpers/db/realEstate"); +const { bulkUpsertRealEstates } = require("../../helpers/db/realEstate"); class PostgresSaver { connect() { @@ -14,27 +11,33 @@ class PostgresSaver { async save(results) { console.log("[POSTGRES] Saving..."); - const resultsWithPublishedAndRenewedDateSame = results.filter( - realEstate => { - const { publishedDate, renewedDate } = realEstate; - const publishedMomentDate = moment.utc(publishedDate); - const renewedMomentDate = moment.utc(renewedDate); - - return publishedMomentDate.isSame(renewedMomentDate, "minute"); - } - ); - - const exist = - resultsWithPublishedAndRenewedDateSame.length > 0 - ? await checkIfAlreadyExist(resultsWithPublishedAndRenewedDateSame) - : false; const savedRecords = await bulkUpsertRealEstates(results); - return { - exist, - savedRecords - }; + if (Array.isArray(savedRecords)) { + const newRealEstates = []; + const existingRealEstates = []; + + for (const savedRecord of savedRecords) { + const { createdAt, updatedAt } = savedRecord; + + const createdAtMoment = moment.utc(createdAt); + const updatedAtMoment = moment.utc(updatedAt); + + if (createdAtMoment.isSame(updatedAtMoment, "second")) { + newRealEstates.push(savedRecord); + } else { + existingRealEstates.push(savedRecord); + } + } + + return { + newRecords: newRealEstates, + existingRecords: existingRealEstates + }; + } else { + throw { message: "[POSTGRES] Failed to save records" }; + } } close() { diff --git a/app/helpers/db/realEstate.js b/app/helpers/db/realEstate.js index 967478a..2443fbb 100644 --- a/app/helpers/db/realEstate.js +++ b/app/helpers/db/realEstate.js @@ -1,6 +1,5 @@ "use strict"; const db = require("../../models/index"); -const sequelize = require("sequelize"); const bulkUpsertRealEstates = async realEstateData => { try { @@ -37,29 +36,6 @@ const bulkUpsertRealEstates = async realEstateData => { } }; -const checkIfAlreadyExist = async realEstateData => { - const orQueryPart = []; - - for (const realEstate of realEstateData) { - const { agencyObjectId, originAgencyName } = realEstate; - - const singleRealEstateQueryPart = { - agencyObjectId, - originAgencyName - }; - - orQueryPart.push(singleRealEstateQueryPart); - } - - const query = { - [sequelize.Op.or]: orQueryPart - }; - - const result = await db.RealEstate.count({ where: query }); - return result > 0; -}; - module.exports = { - bulkUpsertRealEstates, - checkIfAlreadyExist + bulkUpsertRealEstates };