schema.prisma 1.57 KB
generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native", "debian-openssl-1.1.x", "darwin"]
}

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

model User {
  id          Int       @default(autoincrement()) @id
  avatarUrl   String?   @default("")
  email       String    @unique
  password    String
  username    String
  phoneNum    String    @default("") @unique
  emailSecret String?   @default("")
  phoneSecret String?   @default("")
  bio         String?   @default("")
  room        Room      @relation(fields: [roomId], references: [id])
  roomId      Int
  messages    Message[]
  sender      User      @relation("SenderReceiver", fields: [id], references: [id])
  receiver    User?     @relation("SenderReceiver")
  createdAt   DateTime? @default(now())
}

model Room {
  id           Int        @default(autoincrement()) @id
  name         String
  participants User[]
  categories   Category[]
  messages     Message[]
}

model Category {
  id       Int       @default(autoincrement()) @id
  name     String?   @default("")
  room     Room      @relation(fields: [roomId], references: [id])
  roomId   Int
  messages Message[]
}

model Message {
  id         Int       @default(autoincrement()) @id
  text       String    @default("")
  sender     User      @relation(fields: [senderId], references: [id])
  senderId   Int
  room       Room      @relation(fields: [roomId], references: [id])
  roomId     Int
  createdAt  DateTime? @default(now())
  category   Category? @relation(fields: [categoryId], references: [id])
  categoryId Int?
}