128 lines
3.3 KiB
Plaintext
128 lines
3.3 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id Int @id @default(autoincrement())
|
|
firstName String @default("")
|
|
lastName String @default("")
|
|
phone String @unique
|
|
email String @default("")
|
|
password String?
|
|
companyName String?
|
|
inn BigInt?
|
|
ogrn BigInt?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
yachts Yacht[]
|
|
reservations Reservation[] @relation("Reservator")
|
|
reviews Review[]
|
|
refreshTokens RefreshToken[]
|
|
}
|
|
|
|
model Yacht {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
model String?
|
|
year Int
|
|
length Float
|
|
speed Int? @default(0)
|
|
minCost Int? @default(0)
|
|
mainImageUrl String? @default("")
|
|
galleryUrls Json?
|
|
hasQuickRent Boolean @default(false)
|
|
isFeatured Boolean @default(false)
|
|
topText String?
|
|
comfortCapacity Int? @default(0)
|
|
maxCapacity Int? @default(0)
|
|
width Float? @default(0)
|
|
cabinsCount Int? @default(0)
|
|
matherial String? @default("")
|
|
power Int? @default(0)
|
|
description String? @default("")
|
|
userId Int
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
owner User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
reservations Reservation[]
|
|
reviews Review[]
|
|
|
|
@@map("yachts")
|
|
}
|
|
|
|
model Reservation {
|
|
id Int @id @default(autoincrement())
|
|
yachtId Int
|
|
reservatorId Int
|
|
startUtc Int
|
|
endUtc Int
|
|
|
|
yacht Yacht @relation(fields: [yachtId], references: [id], onDelete: Cascade)
|
|
reservator User @relation("Reservator", fields: [reservatorId], references: [id], onDelete: Cascade)
|
|
|
|
@@map("reservations")
|
|
}
|
|
|
|
model Review {
|
|
id Int @id @default(autoincrement())
|
|
reviewerId Int
|
|
yachtId Int
|
|
starsCount Int
|
|
description String
|
|
|
|
yacht Yacht @relation(fields: [yachtId], references: [id], onDelete: Cascade)
|
|
reviewer User @relation(fields: [reviewerId], references: [id], onDelete: Cascade)
|
|
|
|
@@map("reviews")
|
|
}
|
|
|
|
model RefreshToken {
|
|
id Int @id @default(autoincrement())
|
|
token String @unique
|
|
userId Int
|
|
expiresAt DateTime
|
|
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@map("refresh_tokens")
|
|
}
|
|
|
|
model VerificationCode {
|
|
id Int @id @default(autoincrement())
|
|
phone String
|
|
code String
|
|
createdAt DateTime @default(now())
|
|
|
|
@@index([phone])
|
|
@@map("verification_codes")
|
|
}
|
|
|
|
model SmsSendLog {
|
|
id Int @id @default(autoincrement())
|
|
phone String
|
|
ip String
|
|
sentAt DateTime @default(now())
|
|
|
|
@@index([phone, sentAt])
|
|
@@index([ip, sentAt])
|
|
@@map("sms_send_logs")
|
|
}
|
|
|
|
model VerifyBlock {
|
|
id Int @id @default(autoincrement())
|
|
phone String
|
|
ip String
|
|
count Int @default(0)
|
|
blockedUntil DateTime
|
|
|
|
@@unique([phone, ip])
|
|
@@map("verify_blocks")
|
|
}
|