Title
d

dhatGuy

02/13/2022, 4:18 PM
Hi everyone. I'm encountering an error creating an
order
.
This is my schema
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model user {
  id        Int      @id @default(autoincrement())
  username  String   @unique
  email     String   @unique
  hash      String
  role      UserRole @default(USER)
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt()
  cart      cart[]
  order     order[]
}

model order {
  id          Int          @id @default(autoincrement())
  userId      Int
  user        user         @relation(fields: [userId], references: [id], onDelete: Cascade)
  cafeteriaId Int
  cafeteria   cafeteria    @relation(fields: [cafeteriaId], references: [id], onDelete: Cascade)
  totalPrice  Float        @default(0.00)
  status      OrderStatus  @default(PENDING)
  order_item  order_item[]
  date        DateTime     @default(now())
}

model order_item {
  id       Int   @id @default(autoincrement())
  orderId  Int
  order    order @relation(fields: [orderId], references: [id], onDelete: Cascade)
  menuId   Int
  menu     menu  @relation(fields: [menuId], references: [id], onDelete: Cascade)
  quantity Int
  price    Float
}

model cart {
  userId      Int
  user        user        @relation(fields: [userId], references: [id], onDelete: Cascade)
  cafeteriaId Int
  cafeteria   cafeteria   @relation(fields: [cafeteriaId], references: [id], onDelete: Cascade)
  totalPrice  Float       @default(0.00)
  cart_item   cart_item[]

  @@id([userId, cafeteriaId])
}

model cart_item {
  id         Int   @id @default(autoincrement())
  // cartId     Int
  cart       cart  @relation(fields: [userId, cafeId], references: [userId, cafeteriaId], onDelete: Cascade)
  userId     Int   @map("userId")
  cafeId     Int   @map("cafeId")
  menuId     Int
  menu       menu  @relation(fields: [menuId], references: [id], onDelete: Cascade)
  quantity   Int   @default(1)
  totalPrice Float @default(0.00)

  @@unique([userId, cafeId, menuId])
}

model menu {
  id          Int          @id @default(autoincrement())
  title       String       @unique
  price       Float
  description String?
  available   Boolean      @default(true)
  featured    Boolean      @default(false)
  imageUrl    String?
  category    category     @relation(fields: [categoryId], references: [id], onDelete: SetNull)
  categoryId  Int
  // TODO remove optional
  cafeteria   cafeteria?   @relation(fields: [cafeteriaId], references: [id], onDelete: Cascade)
  cafeteriaId Int?
  createdAt   DateTime     @default(now())
  updatedAt   DateTime     @updatedAt()
  cart_item   cart_item[]
  order_item  order_item[]
}

model category {
  id          Int        @id @default(autoincrement())
  name        String
  menus       menu[]
  cafeteria   cafeteria? @relation(fields: [cafeteriaId], references: [id])
  cafeteriaId Int?

  @@unique([name, cafeteriaId])
}

model cafeteria {
  id                Int        @id @default(autoincrement())
  name              String     @unique
  delivery_hours    String[]
  delivery_fee      Float      @default(0.00)
  min_delivery_time Int        @default(30)
  max_delivery_time Int        @default(60)
  menus             menu[]
  createdAt         DateTime   @default(now())
  updatedAt         DateTime   @updatedAt()
  category          category[]
  cart              cart[]
  order             order[]
}

enum OrderStatus {
  PENDING
  COMPLETED
  CANCELLED
}

enum UserRole {
  CAFE_ADMIN
  USER
  DELIVERY
}

enum PaymentMethod {
  PAY_ON_DELIVERY
  PAYSTACK
}
await prisma.order.create({
      data: {
        userId,
        cafeteriaId: cafeId,
      },
    });
This returns error
Unknown arg `cafeteriaId` in data.cafeteriaId for type orderCreateInput. Did you mean `cafeteria`?
  Argument user for data.user is missing.
  Argument cafeteria for data.cafeteria is missing.
await prisma.order.create({
      data: {
        user: {
          connect: {
            id: userId,
          },
        },
        cafeteria: {
          connect: {
            id: cafeId,
          },
        },
      },
    });
Running this also gives an error
Argument data.user.connect of type userWhereUniqueInput needs at least one argument. Available args are listed in green.