enum UserRole {
NORMAL
INFLUENCER
}
model User {
id String @id @default(uuid())
kakaoId String @unique
nickname String @unique
email String? @unique
status String?
role UserRole
images String[]
instagramUrls String[]
youtubeUrls String[]
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
deletedAt DateTime?
blockedAt DateTime?
shortVideoLikes ShortVideoLikes[]
ShortVideo ShortVideo[]
}
model ShortVideo {
id String @id @default(uuid())
title String
tags String[]
status ShortVideoStatus @default(PENDING)
rejectReason String?
videoPath String?
viewCount Int
likeCount Int
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
deletedAt DateTime?
rejectedAt DateTime?
user User @relation(fields: [userId], references: [id])
userId String
likes ShortVideoLikes[]
}
PostgreSQL 특성상 DB 에 오브젝트를 등록하여 사용할 수 있습니다.
Enum 을 활용하면 테이블 선언 없이 열거형 데이터를 활용할 수 있으며 내부적으로 인덱싱이 되므로, 조회 시 굉장히 빠른 조회가 가능합니다.
enum 이 없는 경우 : 모든 행을 한 행씩 조회하며 유저 타입을 확인
enum 이 있는 경우 : influencer 값을 가지고 있는 얘들만 인덱싱 되어 전체 행 조회가 필요 없음