import { db } from "./src/db/index"; import { IUnit } from "./src/types/IUnit"; import { unitsTable } from "./src/db/schema/units"; 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" ) .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" ) .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_view, balcony_area, } of unitsOfMarasiDrive) { type Unit = typeof unitsTable.$inferInsert; const parts = unit_no.split("-"); const unit: Unit = { unitNo: unit_no, number: parts.length === 1 ? +parts[0] : !Number.isNaN(+parts[0]) ? +parts[0] : +parts[1], project, floor: +floor, noOfBathrooms: no_of_bathrooms, noOfParkingSpace: no_of_parking_space, salesPrice: sales_price, state: state as Unit["state"], unitType: unit_type ? (unit_type as Unit["unitType"]) : null, 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, }); }