travelmarine-backend/prisma/schema.prisma

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")
}