95 lines
2.9 KiB
TypeScript
95 lines
2.9 KiB
TypeScript
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,
|
|
});
|
|
}
|