import 'dotenv/config'; import { drizzle } from 'drizzle-orm/node-postgres'; import pkg from 'pg'; const { Pool } = pkg; import * as schema from './schema.js'; import { readFileSync } from 'fs'; import { BusinessListing, CommercialPropertyListing, User } from 'src/models/db.model.js'; const connectionString = process.env.DATABASE_URL // const pool = new Pool({connectionString}) const client = new Pool({ connectionString }) const db = drizzle(client, { schema, logger: true }); //Delete Content await db.delete(schema.commercials); await db.delete(schema.businesses); await db.delete(schema.users); //Broker let filePath = `./data/broker.json` let data: string = readFileSync(filePath, 'utf8'); const userData: User[] = JSON.parse(data); // Erwartet ein Array von Objekten const generatedUserData = [] console.log(userData.length) for (const user of userData) { delete user.id const u = await db.insert(schema.users).values(user).returning({ insertedId: schema.users.id }); // console.log(`--> ${u[0].insertedId}`) generatedUserData.push(u[0].insertedId); } //Business Listings filePath = `./data/businesses.json` data = readFileSync(filePath, 'utf8'); const businessJsonData = JSON.parse(data) as BusinessListing[]; // Erwartet ein Array von Objekten for (const business of businessJsonData) { delete business.id business.created = new Date(business.created) business.userId = getRandomItem(generatedUserData); await db.insert(schema.businesses).values(business); } //Corporate Listings filePath = `./data/commercials.json` data = readFileSync(filePath, 'utf8'); const commercialJsonData = JSON.parse(data) as CommercialPropertyListing[]; // Erwartet ein Array von Objekten for (const commercial of commercialJsonData) { delete commercial.id commercial.created = getRandomDateWithinLastYear(); commercial.userId = getRandomItem(generatedUserData); await db.insert(schema.commercials).values(commercial); } //End await client.end() function getRandomItem(arr: T[]): T { if (arr.length === 0) { throw new Error('The array is empty.'); } const randomIndex = Math.floor(Math.random() * arr.length); return arr[randomIndex]; } function getRandomDateWithinLastYear(): Date { const currentDate = new Date(); const lastYear = new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate()); const timeDiff = currentDate.getTime() - lastYear.getTime(); const randomTimeDiff = Math.random() * timeDiff; const randomDate = new Date(lastYear.getTime() + randomTimeDiff); return randomDate; }