import { db } from "./src/db/index"; import { IUnit } from "./src/types/IUnit"; import { unitsTable } from "./src/db/schema/units"; import { getUnitTypeVariantMarasiDrive } from "./src/utils/getUnitTypeVariantMarasiDrive"; import { getUnitTypeVariantDubaiMarina } from "./src/utils/getUnitTypeVariantDubaiMarina"; import { getUnitSideMarasiDrive } from "./src/utils/getUnitSideMarasiDrive"; import { getUnitSideDubaiMarina } from "./src/utils/getUnitSideDubaiMarina"; import got from "got"; const { units: unitsOfMarasiDrive } = await got .get( // "https://irth-test-ii-16348121.dev.odoo.com/3d-fields/1?token=f82a4708-9a4d-491a-9424-1580b7173ba6" "https://irth.odoo.com/3d-fields/50?token=f82a4708-9a4d-491a-9424-1580b7173ba6" ) .json<{ units: IUnit[] }>(); const { units: unitsOfDubaiMarina } = await got .get( // "https://irth-test-ii-16348121.dev.odoo.com/3d-fields/7?token=f82a4708-9a4d-491a-9424-1580b7173ba6" "https://irth.odoo.com/3d-fields/1?token=f82a4708-9a4d-491a-9424-1580b7173ba6" ) .json<{ units: IUnit[] }>(); for (const { no_of_bathrooms, floor, no_of_parking_space, project, sales_price, square_ft, state, suits_area, unit_no, unit_type, unit_type_variant, unit_view, balcony_area, } of unitsOfDubaiMarina.concat(unitsOfMarasiDrive)) { type Unit = typeof unitsTable.$inferInsert; let parts: string[]; if (unit_no.includes("Retail")) { continue; } try { parts = unit_no.split("-"); } catch (error) { console.log(unit_no); continue; } const unit: Unit = { unitNo: unit_no, number: parts.length === 1 ? +parts[0] : !Number.isNaN(+parts[0]) ? +parts[0] : +parts[1], project, projectSlug: project === "Rove Home Marasi Drive" ? "marasi-drive" : "dubai-marina", floor: +floor, noOfBathrooms: no_of_bathrooms, noOfParkingSpace: no_of_parking_space, salesPrice: sales_price, state: state !== "available" ? "unavailable" : state, unitType: unit_type ? (unit_type as Unit["unitType"]) : null, unitTypeVariant: unit_type_variant ? (unit_type_variant as Unit["unitTypeVariant"]) : null, unitTypeVariantSlug: project === "Rove Home Marasi Drive" ? getUnitTypeVariantMarasiDrive(unit_no) : getUnitTypeVariantDubaiMarina(unit_no), isLoft: project === "Rove Home Dubai Marina" && +floor > 38, side: project === "Rove Home Marasi Drive" ? getUnitSideMarasiDrive(unit_no) : getUnitSideDubaiMarina(unit_no), unitView: unit_view ? (unit_view as Unit["unitView"]) : null, suitsArea: suits_area, squareFt: square_ft, balconyArea: balcony_area, wing: unit_no.startsWith("E") ? "East" : unit_no.startsWith("W") ? "West" : null, }; await db .insert(unitsTable) .values(unit) .onConflictDoUpdate({ target: [unitsTable.project, unitsTable.unitNo], set: unit, }); }