Komplettumstieg auf drizzle
This commit is contained in:
73
bizmatch-server/src/drizzle/import.ts
Normal file
73
bizmatch-server/src/drizzle/import.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
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 { User } from './schema.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 schema.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 schema.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<T>(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;
|
||||
}
|
||||
Reference in New Issue
Block a user