Community, Post (1)_schema.prisma

김종민·2022년 8월 6일
0

apple-market

목록 보기
20/37


들어가기
동네생활의 질문을 올리고 질문의 답변을 하는 Page
1. 전체질문 list,
2. 질문 detailPage(awnser, wondering)
3. write Post로 구성됨.
4. nevigator.geo~~이용해서 현재 좌표(위도, 적도)로 반경 어디까지 나오게 설정가능하게

1. schema.prisma



generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

datasource db {
  provider             = "mysql"
  url                  = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

model User {
  id         Int         @id @default(autoincrement())
  createdAt  DateTime    @default(now())
  updatedAt  DateTime    @updatedAt
  phone      String?     @unique
  email      String?     @unique
  name       String
  avatar     String?
  tokens     Token[]
  products   Product[]
  fav        Fav[]
  posts      Post[]
  answers    Answer[]
  wonderings Wondering[]
}

model Token {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  payload   String   @unique
  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)
  userId    Int
}

model Product {
  id          Int      @id @default(autoincrement())
  createdAt   DateTime @default(now())
  updatedAt   DateTime @updatedAt
  user        User     @relation(fields: [userId], references: [id], onDelete: Cascade)
  userId      Int
  image       String
  name        String
  price       Int
  description String   @db.MediumText
  favs        Fav[]
}

model Fav {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)
  product   Product  @relation(fields: [productId], references: [id], onDelete: Cascade)
  userId    Int
  productId Int
}

model Post { ///Post는 User, Answer, Wondering과 relation 잘봐둘것.
             ///Post에 latitude, longitude 들어가게 함. (GPS)
             ///질문은 question @db.MediumText로!
             
  id        Int         @id @default(autoincrement())
  createdAt DateTime    @default(now())
  updatedAt DateTime    @updatedAt
  user      User        @relation(fields: [userId], references: [id], onDelete: Cascade)
  userId    Int
  question  String      @db.MediumText
  answers   Answer[]
  wondering Wondering[]
  latitude  Float?
  longitude Float?
}

model Answer { ///Post와 User relation 잘봐둘것.
               ///answer는 @db.MeduimText로~
               
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)
  userId    Int
  answer    String   @db.MediumText
  post      Post     @relation(fields: [postId], references: [id], onDelete: Cascade)
  postId    Int
}

model Wondering {  ///User, Post와 relation 잘 봐둘것.
                   
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)
  userId    Int
  post      Post     @relation(fields: [postId], references: [id], onDelete: Cascade)
  postId    Int
}

좋아요(Fav)나 궁금해요(Wondering)은 User와 Post 혹은 Product와
connect만 한다는 것을 잘 알아놓는다

profile
코딩하는초딩쌤

0개의 댓글