enum userType {
customer
mover
}
enum Platform {
google
kakao
naver
}
enum NotificationType {
newEstimate
request
confirmed
}
model User {
id String @id @default(uuid())
userType userType @default(customer)
name String
email String @unique
password String
phoneNumber String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([phoneNumber, userType])
customer Customer?
mover Mover?
socialLogins SocialLogin[]
notifications Notification[]
}
model Customer {
id String @id @default(uuid())
profileImg String
career String
userId String @unique
user User @relation(fields: [userId], references: [id])
requests EstimateRequest[]
favorites Favorite[]
}
model Mover {
id String @id @default(uuid())
userId String @unique
img String
career String
oneLiner String
introduction String
serviceType String[]
serviceArea String[]
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
estimates Estimate[]
favorites Favorite[]
}
model Estimate {
id String @id @default(uuid())
moverId String
requestId String
price String
comment String
mover Mover @relation(fields: [moverId], references: [id], onDelete: Cascade)
request EstimateRequest @relation(fields: [requestId], references: [id], onDelete: Cascade)
confirmed ConfirmedEstimate[]
}
model EstimateRequest {
id String @id @default(uuid())
customerId String
type String
date String
departures String
departuresDetail String
arrivals String
arrivalsDetail String
isDesignated Boolean
createdAt DateTime @default(now())
customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)
estimates Estimate[]
}
model ConfirmedEstimate {
id String @id @default(uuid())
estimateId String
createdAt DateTime @default(now())
estimate Estimate @relation(fields: [estimateId], references: [id], onDelete: Cascade)
reviews Review[]
}
model Favorite {
id String @id @default(uuid())
moverId String
customerId String
createdAt DateTime @default(now())
mover Mover @relation(fields: [moverId], references: [id], onDelete: Cascade)
customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)
}
model SocialLogin {
id String @id @default(uuid())
userId String
platform Platform
platformId String
createdAt DateTime @default(now())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model Review {
id String @id @default(uuid())
confirmedEstimateId String
score Int
review String
createdAt DateTime @default(now())
confirmedEstimate ConfirmedEstimate @relation(fields: [confirmedEstimateId], references: [id], onDelete: Cascade)
}
model Notification {
id String @id @default(uuid())
userId String
isRead Boolean
type NotificationType
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}