added initial schema.prisma, populate brand and equipment

This commit is contained in:
2024-10-05 20:06:12 +00:00
parent 5a950f6851
commit 9001c47410
35 changed files with 360 additions and 24 deletions

View File

@ -10,5 +10,82 @@ generator client {
datasource db {
provider = "postgresql"
url = env("10.0.0.124:5432")
url = env("DATABASE_URL")
}
model Vehicle {
id Int @id @default(autoincrement())
brand String
model String
variant String?
year Int
kilometers Int
condition String
location String
latitude String
longitude String
gasType String
images String[]
description String
service String
inspectedAt DateTime?
updatedAt DateTime @updatedAt
createdAt DateTime @default(now())
auctions Auction[] // Relation to Auction
equipment Equipment[] @relation("VehicleEquipment")
}
model Equipment {
id Int @id @default(autoincrement())
name String
vehicles Vehicle[] @relation("VehicleEquipment")
}
model Auction {
id Int @id @default(autoincrement())
vehicleId Int
userId Int
askingPrice Float
description String?
vehicle Vehicle @relation(fields: [vehicleId], references: [id])
user User @relation(fields: [userId], references: [id])
updatedAt DateTime @updatedAt
createdAt DateTime @default(now())
bids Bid[] // Relation to Bid
}
model User {
id Int @id @default(autoincrement())
name String
company String?
address String
latitude String
longitude String
phone String
privatePhone String?
email String
cvr String?
updatedAt DateTime @updatedAt
createdAt DateTime @default(now())
auctions Auction[] // Relation to Auction
}
model Bid {
id Int @id @default(autoincrement())
auctionId Int
bid Float
auction Auction @relation(fields: [auctionId], references: [id])
updatedAt DateTime @updatedAt
createdAt DateTime @default(now())
}

188
prisma/seed.ts Normal file
View File

@ -0,0 +1,188 @@
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
const equipmentData = [
"aut.",
"aut.gear/tiptronic",
"ratgearskifte",
"alu.",
"15\" Alufælge",
"16\" Alufælge",
"17\" Alufælge",
"18\" Alufælge",
"19\" Alufælge",
"20\" Alufælge",
"21\" Alufælge",
"22\" Alufælge",
"vinterhjul",
"varme i rat",
"airc.",
"fuldaut. klima",
"2 zone klima",
"3 zone klima",
"4 zone klima",
"køl i handskerum",
"elektrisk",
"kabinevarmer",
"motorkabinevarmer",
"alarm",
"el-klapbare sidespejle",
"el-klapbare sidespejle m. varme",
"el-spejle m/varme",
"automatisk parkerings system",
"360° kamera",
"bakkamera",
"parkeringssensor (bag)",
"parkeringssensor (for)",
"adaptiv fartpilot",
"automatisk",
"start/stop",
"el betjent bagklap",
"dæktryksmåler",
"adaptiv undervogn",
"elektrisk parkeringsbremse",
"træthedsregistrering",
"skiltegenkendelse",
"CD",
"CD/radio",
"radio med CDboks",
"el komfortsæder",
"sportssæder",
"integrerede børnesæder",
"3 individuelle sæder i bag",
"lygtevasker",
"tågelygter",
"bi-xenon",
"xenonlys",
"automatisk lys",
"fjernlysassistent",
"kurvelys",
"LED kørelys",
"fuld LED forlygter",
"airbag",
"db. airbags",
"4 airbags",
"6 airbags",
"7 airbags",
"8 airbags",
"9 airbags",
"10 airbags",
"ABS",
"antispin",
"c.lås",
"fjernb. c.lås",
"nøglefri betjening",
"fartpilot",
"kørecomputer",
"infocenter",
"startspærre",
"varme i forrude",
"auto. nedbl. Bakspejl",
"udv. temp. måler",
"regnsensor",
"sædevarme",
"højdejust. forsæder",
"højdejust. førersæde",
"el indst. forsæder",
"el indst. førersæde m. memory",
"soltag",
"el-soltag",
"glastag",
"el-ruder",
"4x el-ruder",
"el-spejle",
"DAB radio",
"DAB+ radio",
"navigation",
"multifunktionsrat",
"håndfrit til mobil",
"bluetooth",
"musikstreaming via bluetooth",
"nightvision",
"digitalt cockpit",
"headup display",
"Android Auto",
"Apple CarPlay",
"Internet",
"trådløs",
"mobilopladning",
"SD kortlæser",
"USB tilslutning",
"AUX tilslutning",
"armlæn",
"isofix",
"bagagerumsdækken",
"kopholder",
"stofindtræk",
"dellæder",
"læderindtræk",
"kunstlæder",
"splitbagsæde",
"læderrat",
"ESP",
"servo",
"vognbaneassistent",
"blindvinkelsassistent",
"automatisk nødbremsesystem",
"sænket",
"tagræling",
"tonede ruder",
"mørktonede ruder i bag",
"1 ejer",
"ikke ryger",
"service ok",
"brugtbilsattest",
"træk",
"aftag. træk",
"svingbart træk (manuel)",
"svingbart træk (elektrisk)",
"diesel partikel filter",
"undervognsbehandlet"
];
const brandData = [
"Abarth", "AC", "Adler", "Aiways", "Alfa Romeo", "Alpina", "Aston Martin",
"Auburn", "Audi", "Austin", "Austin Healey", "Auto Union", "Bentley",
"BMW", "Buick", "BYD", "Cadillac", "CF Moto", "Chevrolet", "Chrysler",
"Citroën", "Corvette", "Cupra", "Dacia", "Daewoo", "Daihatsu", "Daimler",
"Dallara", "DeLorean", "DKW", "Dodge", "DS", "Ferrari", "Fiat", "Fisker",
"Ford", "GMC", "Honda", "Hongqi", "Hyundai", "JAC", "Jaguar", "Jeep",
"Kalmar", "KGM", "Kia", "Lada", "Lamborghini", "Lancia", "Land Rover",
"Lexus", "Lincoln", "Lloyd", "Lotus", "Lynk & Co", "MAN", "Maserati",
"Maxus", "Maybach", "Mazda", "McLaren", "Mercedes", "Mercury",
"Messerschmitt", "MG", "MINI", "Mitsubishi", "Morgan", "Morris", "NIO",
"Nissan", "Oldsmobile", "Opel", "Packard", "Peugeot", "Plymouth",
"Polestar", "Pontiac", "Porsche", "Renault", "Rolls-Royce", "Rover",
"Seat", "Seres", "Singer", "Skoda", "Smart", "SsangYong", "Studebaker",
"Subaru", "Suzuki", "Saab", "Tesla", "Toyota", "Triumph", "Vauxhall",
"Volvo", "Voyah", "VW", "Wolseley", "Xpeng", "Yugo"
];
async function main() {
for (const equipment of equipmentData) {
await prisma.equipment.create({
data: { name: equipment },
});
}
console.log('Equipment data seeded');
// Seed Brands
for (const brand of brandData) {
await prisma.brand.create({
data: { name: brand },
});
}
console.log('Brand data seeded');
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});