193 lines
6.5 KiB
SQL
193 lines
6.5 KiB
SQL
/*
|
|
Warnings:
|
|
|
|
- You are about to drop the column `email` on the `User` table. All the data in the column will be lost.
|
|
- You are about to drop the `Post` table. If the table is not empty, all the data it contains will be lost.
|
|
- A unique constraint covering the columns `[openId]` on the table `User` will be added. If there are existing duplicate values, this will fail.
|
|
- Added the required column `phone` to the `User` table without a default value. This is not possible if the table is not empty.
|
|
- Added the required column `role` to the `User` table without a default value. This is not possible if the table is not empty.
|
|
- Made the column `name` on table `User` required. This step will fail if there are existing NULL values in that column.
|
|
|
|
*/
|
|
-- CreateEnum
|
|
CREATE TYPE "Role" AS ENUM ('SYSTEM_ADMIN', 'HOSPITAL_ADMIN', 'DIRECTOR', 'LEADER', 'DOCTOR', 'ENGINEER');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "DeviceStatus" AS ENUM ('ACTIVE', 'INACTIVE');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "TaskStatus" AS ENUM ('PENDING', 'ACCEPTED', 'COMPLETED', 'CANCELLED');
|
|
|
|
-- DropForeignKey
|
|
ALTER TABLE "Post" DROP CONSTRAINT "Post_authorId_fkey";
|
|
|
|
-- DropIndex
|
|
DROP INDEX "User_email_key";
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "User" DROP COLUMN "email",
|
|
ADD COLUMN "departmentId" INTEGER,
|
|
ADD COLUMN "groupId" INTEGER,
|
|
ADD COLUMN "hospitalId" INTEGER,
|
|
ADD COLUMN "openId" TEXT,
|
|
ADD COLUMN "passwordHash" TEXT,
|
|
ADD COLUMN "phone" TEXT NOT NULL,
|
|
ADD COLUMN "role" "Role" NOT NULL,
|
|
ALTER COLUMN "name" SET NOT NULL;
|
|
|
|
-- DropTable
|
|
DROP TABLE "Post";
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Hospital" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "Hospital_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Department" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"hospitalId" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "Department_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Group" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"departmentId" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "Group_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Patient" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"phone" TEXT NOT NULL,
|
|
"idCardHash" TEXT NOT NULL,
|
|
"hospitalId" INTEGER NOT NULL,
|
|
"doctorId" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "Patient_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Device" (
|
|
"id" SERIAL NOT NULL,
|
|
"snCode" TEXT NOT NULL,
|
|
"currentPressure" INTEGER NOT NULL,
|
|
"status" "DeviceStatus" NOT NULL DEFAULT 'ACTIVE',
|
|
"patientId" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "Device_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Task" (
|
|
"id" SERIAL NOT NULL,
|
|
"status" "TaskStatus" NOT NULL DEFAULT 'PENDING',
|
|
"creatorId" INTEGER NOT NULL,
|
|
"engineerId" INTEGER,
|
|
"hospitalId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TaskItem" (
|
|
"id" SERIAL NOT NULL,
|
|
"taskId" INTEGER NOT NULL,
|
|
"deviceId" INTEGER NOT NULL,
|
|
"oldPressure" INTEGER NOT NULL,
|
|
"targetPressure" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "TaskItem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Department_hospitalId_idx" ON "Department"("hospitalId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Group_departmentId_idx" ON "Group"("departmentId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Patient_phone_idCardHash_idx" ON "Patient"("phone", "idCardHash");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Patient_hospitalId_doctorId_idx" ON "Patient"("hospitalId", "doctorId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Device_snCode_key" ON "Device"("snCode");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Device_patientId_status_idx" ON "Device"("patientId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Task_hospitalId_status_createdAt_idx" ON "Task"("hospitalId", "status", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TaskItem_taskId_idx" ON "TaskItem"("taskId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TaskItem_deviceId_idx" ON "TaskItem"("deviceId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_openId_key" ON "User"("openId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_phone_idx" ON "User"("phone");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_hospitalId_role_idx" ON "User"("hospitalId", "role");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_departmentId_role_idx" ON "User"("departmentId", "role");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_groupId_role_idx" ON "User"("groupId", "role");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Department" ADD CONSTRAINT "Department_hospitalId_fkey" FOREIGN KEY ("hospitalId") REFERENCES "Hospital"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Group" ADD CONSTRAINT "Group_departmentId_fkey" FOREIGN KEY ("departmentId") REFERENCES "Department"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "User" ADD CONSTRAINT "User_hospitalId_fkey" FOREIGN KEY ("hospitalId") REFERENCES "Hospital"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "User" ADD CONSTRAINT "User_departmentId_fkey" FOREIGN KEY ("departmentId") REFERENCES "Department"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "User" ADD CONSTRAINT "User_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Patient" ADD CONSTRAINT "Patient_hospitalId_fkey" FOREIGN KEY ("hospitalId") REFERENCES "Hospital"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Patient" ADD CONSTRAINT "Patient_doctorId_fkey" FOREIGN KEY ("doctorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Device" ADD CONSTRAINT "Device_patientId_fkey" FOREIGN KEY ("patientId") REFERENCES "Patient"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_engineerId_fkey" FOREIGN KEY ("engineerId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_hospitalId_fkey" FOREIGN KEY ("hospitalId") REFERENCES "Hospital"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TaskItem" ADD CONSTRAINT "TaskItem_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TaskItem" ADD CONSTRAINT "TaskItem_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|