Initial commit: LACA parking management system
This commit is contained in:
226
backend/prisma/schema.prisma
Normal file
226
backend/prisma/schema.prisma
Normal file
@@ -0,0 +1,226 @@
|
||||
// This is your Prisma schema file,
|
||||
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
|
||||
// https://github.com/prisma/prisma-client-js/issues/616#issuecomment-616107821
|
||||
binaryTargets = ["native", "darwin", "debian-openssl-1.1.x"]
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
model User {
|
||||
id Int @id @default(autoincrement())
|
||||
email String? @unique
|
||||
username String? @unique
|
||||
password String?
|
||||
phone String? @unique
|
||||
fullname String?
|
||||
dob DateTime?
|
||||
gender Gender @default(Female)
|
||||
bookings Booking[]
|
||||
language Language @default(vi)
|
||||
Slots Slot[]
|
||||
Comments Comment[]
|
||||
created_at DateTime @default(now()) @db.Timestamptz(3)
|
||||
updated_at DateTime @updatedAt @db.Timestamptz(3)
|
||||
deleted_at DateTime? @db.Timestamptz(3)
|
||||
Like Like[]
|
||||
Vote Vote[]
|
||||
|
||||
@@index([id, email])
|
||||
}
|
||||
|
||||
model Booking {
|
||||
id Int @id @default(autoincrement())
|
||||
path String?
|
||||
image String?
|
||||
public Boolean @default(true)
|
||||
user User @relation(fields: [user_id], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
user_id Int
|
||||
status BookingStatus @default(pending)
|
||||
slot Slot @relation(fields: [slot_id], references: [id])
|
||||
slot_id Int
|
||||
start_at DateTime @db.Timestamptz(3)
|
||||
end_at DateTime @db.Timestamptz(3)
|
||||
owner String
|
||||
license_plates String
|
||||
contact String
|
||||
pricing Int?
|
||||
booking_type BookingType? @default(All)
|
||||
slot_type SlotType? @default(Car)
|
||||
created_at DateTime @default(now()) @db.Timestamptz(3)
|
||||
updated_at DateTime @updatedAt @db.Timestamptz(3)
|
||||
deleted_at DateTime? @db.Timestamptz(3)
|
||||
|
||||
@@index([user_id, id])
|
||||
}
|
||||
|
||||
model Slot {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
lat Float
|
||||
lng Float
|
||||
images String[] @default([])
|
||||
address String
|
||||
district String
|
||||
ward String
|
||||
city String
|
||||
destination String?
|
||||
phone String?
|
||||
total Int
|
||||
empty Int
|
||||
published Boolean @default(false)
|
||||
tenant Tenant? @relation(fields: [tenantId], references: [id])
|
||||
tenantId Int?
|
||||
user User? @relation(fields: [userId], references: [id])
|
||||
userId Int?
|
||||
distance Float?
|
||||
duration Float?
|
||||
directions Json?
|
||||
slot_type SlotType? @default(Car)
|
||||
alow_booking_type BookingType? @default(All)
|
||||
open String? @db.VarChar(5)
|
||||
close String? @db.VarChar(5)
|
||||
created_at DateTime @default(now()) @db.Timestamptz(3)
|
||||
updated_at DateTime @updatedAt @db.Timestamptz(3)
|
||||
deleted_at DateTime? @db.Timestamptz(3)
|
||||
pricing_per_hour Int @default(0)
|
||||
Bookings Booking[]
|
||||
Comments Comment[]
|
||||
Vote Vote[]
|
||||
|
||||
@@index([id])
|
||||
}
|
||||
|
||||
model Admin {
|
||||
id Int @id @default(autoincrement())
|
||||
username String @unique
|
||||
password String
|
||||
password_confirmation String?
|
||||
street String?
|
||||
city String?
|
||||
province String?
|
||||
first_name String
|
||||
last_name String
|
||||
phone String
|
||||
dob DateTime?
|
||||
language Language @default(vi)
|
||||
last_login_at DateTime?
|
||||
current_login_at DateTime?
|
||||
last_login_failed_at DateTime?
|
||||
consecutive_login_penalty Int @default(0)
|
||||
avatarUrl String?
|
||||
active Boolean @default(true)
|
||||
last_lockout_at DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
model Tenant {
|
||||
id Int @id @default(autoincrement())
|
||||
email String? @unique
|
||||
username String @unique
|
||||
password String
|
||||
password_confirmation String?
|
||||
street String?
|
||||
city String?
|
||||
province String?
|
||||
postal_code String?
|
||||
first_name String
|
||||
last_name String
|
||||
phone String
|
||||
language Language @default(vi)
|
||||
last_login_at DateTime?
|
||||
current_login_at DateTime?
|
||||
last_login_failed_at DateTime?
|
||||
consecutive_login_penalty Int @default(0)
|
||||
avatarUrl String?
|
||||
active Boolean @default(true)
|
||||
last_lockout_at DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
Slots Slot[]
|
||||
Comments Comment[]
|
||||
}
|
||||
|
||||
model File {
|
||||
id Int @id @default(autoincrement())
|
||||
path String
|
||||
slot_id Int?
|
||||
user_id Int?
|
||||
size Int
|
||||
mine_type String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
deletedAt DateTime?
|
||||
}
|
||||
|
||||
model History {
|
||||
id Int @id @default(autoincrement())
|
||||
}
|
||||
|
||||
model Comment {
|
||||
id Int @id @default(autoincrement())
|
||||
slot_id Int
|
||||
content String?
|
||||
tenant Tenant? @relation(fields: [tenantId], references: [id])
|
||||
tenantId Int?
|
||||
user User? @relation(fields: [userId], references: [id])
|
||||
userId Int?
|
||||
slot Slot @relation(fields: [slot_id], references: [id])
|
||||
likes Like[]
|
||||
}
|
||||
|
||||
model Like {
|
||||
id Int @id @default(autoincrement())
|
||||
Comment Comment @relation(fields: [commentId], references: [id])
|
||||
commentId Int
|
||||
user User? @relation(fields: [userId], references: [id])
|
||||
userId Int?
|
||||
}
|
||||
|
||||
model Vote {
|
||||
id Int @id @default(autoincrement())
|
||||
slot Slot @relation(fields: [slot_id], references: [id])
|
||||
slot_id Int
|
||||
user User? @relation(fields: [userId], references: [id])
|
||||
userId Int?
|
||||
source Int @default(0)
|
||||
type Int @default(0)
|
||||
}
|
||||
|
||||
enum Language {
|
||||
vi
|
||||
en
|
||||
}
|
||||
|
||||
enum Gender {
|
||||
Male
|
||||
Female
|
||||
LGBT
|
||||
}
|
||||
|
||||
enum BookingStatus {
|
||||
done
|
||||
pending
|
||||
reject
|
||||
cancel
|
||||
out
|
||||
}
|
||||
|
||||
enum SlotType {
|
||||
Car
|
||||
Mortorbike
|
||||
Orther
|
||||
}
|
||||
|
||||
enum BookingType {
|
||||
Fulltime
|
||||
Parttime
|
||||
All
|
||||
}
|
||||
Reference in New Issue
Block a user