diff --git a/backend/prisma/migrations/20260519115003_health_check/migration.sql b/backend/prisma/migrations/20260519115003_health_check/migration.sql new file mode 100644 index 0000000..5a8735c --- /dev/null +++ b/backend/prisma/migrations/20260519115003_health_check/migration.sql @@ -0,0 +1,66 @@ +-- CreateTable +CREATE TABLE "HealthCheckCategory" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "slug" TEXT, + "description" TEXT, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "sortOrder" INTEGER NOT NULL DEFAULT 1000, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "HealthCheckCategory_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "HealthPackage" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "slug" TEXT NOT NULL, + "description" TEXT, + "price" DECIMAL(10,2), + "image" TEXT, + "discountedPrice" DECIMAL(10,2), + "inclusions" JSONB NOT NULL DEFAULT '{}', + "isActive" BOOLEAN NOT NULL DEFAULT true, + "isFeatured" BOOLEAN NOT NULL DEFAULT false, + "sortOrder" INTEGER NOT NULL DEFAULT 1000, + "categoryId" INTEGER NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "HealthPackage_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "HealthPackageInquiry" ( + "id" SERIAL NOT NULL, + "fullName" TEXT NOT NULL, + "mobileNumber" TEXT NOT NULL, + "email" TEXT, + "age" INTEGER, + "gender" TEXT, + "preferredDate" TIMESTAMP(3), + "message" TEXT, + "packageId" INTEGER NOT NULL, + "status" TEXT NOT NULL DEFAULT 'pending', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "HealthPackageInquiry_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "HealthCheckCategory_name_key" ON "HealthCheckCategory"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "HealthCheckCategory_slug_key" ON "HealthCheckCategory"("slug"); + +-- CreateIndex +CREATE UNIQUE INDEX "HealthPackage_slug_key" ON "HealthPackage"("slug"); + +-- AddForeignKey +ALTER TABLE "HealthPackage" ADD CONSTRAINT "HealthPackage_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "HealthCheckCategory"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "HealthPackageInquiry" ADD CONSTRAINT "HealthPackageInquiry_packageId_fkey" FOREIGN KEY ("packageId") REFERENCES "HealthPackage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index d212f41..1fd0d9c 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -223,6 +223,61 @@ model NewsImage { 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[] + + 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