Как создать seed.ts и заполнить базу данных(Prisma)
У меня есть файл schema.prisma:
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Если вы написали два слова в один, то с помощью map сделайте между ними "_"
email String @unique
password String
name String @unique
avatarPath String @default("/uploads/default-avatar.png") @map("avatar_path")
phone String @default("")
orders Order[]
reviews Review[]
favorites Product[]
}
// Product Order OrderItems Category Review
model Product {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
name String @unique
slug String @unique
description String
price Int
images String[]
orderItems OrderItem[]
reviews Review[]
category Category? @relation(fields: [categoryId], references: [id])
categoryId Int? @map("category_id")
user User? @relation(fields: [userId], references: [id])
userId Int?
}
model Category {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
name String @unique
slug String @unique
products Product[]
}
model Review {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
rating Int
text String
user User @relation(fields: [userId], references: [id])
userId Int @map("user_id")
product Product @relation(fields: [productId], references: [id])
productId Int @map("product_id")
}
model Order {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
status EnumOrderStatus @default(PENDING)
items OrderItem[]
user User @relation(fields: [userId], references: [id])
userId Int @map("user_id")
}
model OrderItem {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
quantity Int
price Int
order Order? @relation(fields: [orderId], references: [id])
orderId Int? @map("order_id")
product Product? @relation(fields: [productId], references: [id])
productId Int @map("product_id")
}
enum EnumOrderStatus {
PENDING
PAYED
SHIPPED
DELIVERED
}
Есть seed.ts
import { Category, Prisma, PrismaClient, Product } from "@prisma/client";
import * as dotenv from "dotenv"
import { products } from "./product/productList";
dotenv.config();
const prisma = new PrismaClient()
// const products: Prisma.ProductsCreateInput[] = [
// {
// name: "Armatfood. Компот из терна",
// slug: "armatfood-komot-iz-terna",
// description: "",
// price: 205,
// images: ["https://gurmanarmenia.ru/image/cache/catalog/irafoto/armatfud/tern-228x228.png"],
// category: "Напитки | Компоты | Соки"
// }
// ]
const createProducts = await prisma.product.create({
data: {
name: "Kerakur. Икра баклажановая",
slug: "kerakur ikra",
description: "Икра баклажановая",
price: 250,
images: [],
category: {
create:{
name: "Овощная консервация",
slug: "ovoschnaya-konservatsiya",
}
}
}
})
async function main() {
console.log("Start seeding...")
for(let product of products) {
await prisma.product.create({
data: product
})
}
}
main()
.catch(e => console.error(e))
.finally(async () => {
await prisma.$disconnect()
})
Не могу заполнить базу данных, хотя у меня есть файл schema.prisma и там я все связи провела, но я не знаю, что нужно написать в seed.ts, чтобы я уже начала писать продукты с разными категориями, посмотрела документацию, разные sourse коды, но там только один пример с юзером и постом, но мне нужно именно знать, как теперь написать такое же, только с продуктами