439 lines
10 KiB
Plaintext
439 lines
10 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id Int @id @default(autoincrement())
|
|
username String @unique
|
|
password String
|
|
role String? @default("admin")
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Doctor {
|
|
id Int @id @default(autoincrement())
|
|
doctorId String @unique
|
|
name String
|
|
image String?
|
|
designation String?
|
|
experience Int?
|
|
workingStatus String?
|
|
qualification String?
|
|
isActive Boolean @default(true)
|
|
isFeatured Boolean @default(false)
|
|
globalSortOrder Int @default(1000)
|
|
specializations DoctorSpecialization[]
|
|
professionalSummary String? @db.Text
|
|
seoId Int? @unique
|
|
seo Seo? @relation(fields: [seoId], references: [id])
|
|
departments DoctorDepartment[]
|
|
appointments Appointment[]
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Department {
|
|
id Int @id @default(autoincrement())
|
|
departmentId String @unique
|
|
name String
|
|
image String?
|
|
|
|
para1 String?
|
|
para2 String?
|
|
para3 String?
|
|
facilities String?
|
|
services String?
|
|
facilitiesList Facility[]
|
|
|
|
isActive Boolean @default(true)
|
|
sortOrder Int @default(1000)
|
|
|
|
doctors DoctorDepartment[]
|
|
appointments Appointment[]
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model DoctorDepartment {
|
|
id Int @id @default(autoincrement())
|
|
|
|
doctorId Int
|
|
departmentId Int
|
|
|
|
doctor Doctor @relation(fields: [doctorId], references: [id])
|
|
department Department @relation(fields: [departmentId], references: [id])
|
|
sortOrder Int @default(1000)
|
|
timing DoctorTiming?
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([doctorId, departmentId])
|
|
}
|
|
|
|
model DoctorTiming {
|
|
id Int @id @default(autoincrement())
|
|
|
|
doctorDepartmentId Int @unique
|
|
doctorDepartment DoctorDepartment @relation(fields: [doctorDepartmentId], references: [id])
|
|
|
|
monday String?
|
|
tuesday String?
|
|
wednesday String?
|
|
thursday String?
|
|
friday String?
|
|
saturday String?
|
|
sunday String?
|
|
additional String?
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Blog {
|
|
id Int @id @default(autoincrement())
|
|
title String
|
|
writer String?
|
|
image String?
|
|
content Json
|
|
isActive Boolean @default(true)
|
|
slug String @unique
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Career {
|
|
id Int @id @default(autoincrement())
|
|
post String
|
|
designation String?
|
|
qualification String?
|
|
experienceNeed String?
|
|
email String?
|
|
number String?
|
|
status String @default("new")
|
|
isActive Boolean @default(true)
|
|
sortOrder Int @default(1000)
|
|
candidates Candidate[]
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Candidate {
|
|
id Int @id @default(autoincrement())
|
|
fullName String
|
|
mobile String
|
|
email String
|
|
subject String
|
|
coverLetter String
|
|
careerId Int
|
|
|
|
career Career @relation(fields: [careerId], references: [id])
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Appointment {
|
|
id Int @id @default(autoincrement())
|
|
|
|
name String
|
|
mobileNumber String
|
|
email String?
|
|
message String?
|
|
date DateTime
|
|
|
|
doctorId String
|
|
departmentId String
|
|
|
|
doctor Doctor @relation(fields: [doctorId], references: [doctorId])
|
|
department Department @relation(fields: [departmentId], references: [departmentId])
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Inquiry {
|
|
id Int @id @default(autoincrement())
|
|
|
|
fullName String
|
|
number String
|
|
emailId String?
|
|
subject String?
|
|
message String?
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model AcademicsResearch {
|
|
id Int @id @default(autoincrement())
|
|
|
|
fullName String
|
|
number String
|
|
emailId String?
|
|
subject String?
|
|
courseName String?
|
|
message String?
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model EmailConfig {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
email String
|
|
type String
|
|
isActive Boolean @default(true)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model NewsMedia {
|
|
id Int @id @default(autoincrement())
|
|
|
|
headline String
|
|
content String?
|
|
firstPara String?
|
|
secondPara String?
|
|
author String?
|
|
date DateTime?
|
|
images NewsImage[]
|
|
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model NewsImage {
|
|
id Int @id @default(autoincrement())
|
|
url String
|
|
newsMediaId Int
|
|
newsMedia NewsMedia @relation(fields: [newsMediaId], references: [id], onDelete: Cascade)
|
|
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model HealthCheckCategory {
|
|
id Int @id @default(autoincrement())
|
|
name String @unique
|
|
slug String? @unique
|
|
description String?
|
|
isActive Boolean @default(true)
|
|
sortOrder Int @default(1000)
|
|
|
|
packages HealthPackage[]
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model HealthPackage {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
slug String @unique
|
|
description String?
|
|
price Decimal? @db.Decimal(10, 2)
|
|
image String?
|
|
discountedPrice Decimal? @db.Decimal(10, 2)
|
|
|
|
inclusions Json @default("{}")
|
|
|
|
isActive Boolean @default(true)
|
|
isFeatured Boolean @default(false)
|
|
sortOrder Int @default(1000)
|
|
|
|
categoryId Int
|
|
category HealthCheckCategory @relation(fields: [categoryId], references: [id])
|
|
|
|
inquiries HealthPackageInquiry[]
|
|
|
|
seoId Int? @unique
|
|
seo Seo? @relation(fields: [seoId], references: [id])
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model HealthPackageInquiry {
|
|
id Int @id @default(autoincrement())
|
|
fullName String
|
|
mobileNumber String
|
|
email String?
|
|
age Int?
|
|
gender String?
|
|
preferredDate DateTime?
|
|
message String?
|
|
|
|
packageId Int
|
|
healthPackage HealthPackage @relation(fields: [packageId], references: [id])
|
|
|
|
status String @default("pending")
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
|
|
model DoctorSpecialization {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
description String? @db.Text
|
|
doctorId Int
|
|
doctor Doctor @relation(fields: [doctorId],references: [id],onDelete: Cascade)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Seo {
|
|
id Int @id @default(autoincrement())
|
|
doctor Doctor?
|
|
healthPackage HealthPackage?
|
|
facility Facility?
|
|
|
|
|
|
seoTitle String?
|
|
metaDescription String? @db.Text
|
|
focusKeyphrase String?
|
|
slug String? @unique
|
|
tags String[]
|
|
|
|
ogTitle String?
|
|
ogDescription String? @db.Text
|
|
ogImage String?
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model HomepageBanner {
|
|
id Int @id @default(autoincrement())
|
|
|
|
title String?
|
|
subtitle String?
|
|
|
|
mediaType BannerMediaType
|
|
|
|
desktopMediaUrl String
|
|
mobileMediaUrl String?
|
|
|
|
buttonText String?
|
|
buttonLink String?
|
|
|
|
openInNewTab Boolean @default(false)
|
|
|
|
textAlignment String? @default("left")
|
|
|
|
sortOrder Int @default(1000)
|
|
isActive Boolean @default(true)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
enum BannerMediaType {
|
|
IMAGE
|
|
VIDEO
|
|
}
|
|
|
|
model InsurancePartner {
|
|
id Int @id @default(autoincrement())
|
|
|
|
name String
|
|
logo String
|
|
websiteUrl String?
|
|
sortOrder Int @default(1000)
|
|
isActive Boolean @default(true)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Accreditation {
|
|
id Int @id @default(autoincrement())
|
|
|
|
title String
|
|
type AccreditationType
|
|
logo String?
|
|
image String?
|
|
description String? @db.Text
|
|
|
|
sortOrder Int @default(1000)
|
|
isActive Boolean @default(true)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
enum AccreditationType {
|
|
ACCREDITATION
|
|
CERTIFICATION
|
|
}
|
|
|
|
model Facility {
|
|
id Int @id @default(autoincrement())
|
|
facilityId String @unique
|
|
name String
|
|
slug String @unique
|
|
|
|
shortDescription String? @db.Text
|
|
description String? @db.Text
|
|
videoUrl String?
|
|
|
|
isActive Boolean @default(true)
|
|
isFeatured Boolean @default(false)
|
|
sortOrder Int @default(1000)
|
|
|
|
images FacilityImage[]
|
|
|
|
departmentId Int?
|
|
department Department? @relation(fields: [departmentId], references: [id], onDelete: SetNull)
|
|
|
|
seoId Int? @unique
|
|
seo Seo? @relation(fields: [seoId], references: [id], onDelete: SetNull)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model FacilityImage {
|
|
id Int @id @default(autoincrement())
|
|
url String
|
|
altText String?
|
|
description String?
|
|
|
|
facilityId Int
|
|
facility Facility @relation(fields: [facilityId], references: [id], onDelete: Cascade)
|
|
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model GoogleReview {
|
|
id Int @id @default(autoincrement())
|
|
|
|
reviewerName String
|
|
reviewerImage String?
|
|
rating Int
|
|
review String @db.Text
|
|
reviewDate DateTime?
|
|
googleReviewUrl String?
|
|
|
|
isFeatured Boolean @default(false)
|
|
isActive Boolean @default(true)
|
|
|
|
sortOrder Int @default(1000)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
} |