文件
hyb-oa/server/prisma/migrations/20260306233806_p15b_leave_v1_models/migration.sql
T

122 行
4.6 KiB
SQL

/*
Warnings:
- Added the required column `leave_type_id` to the `leave_requests` table without a default value. This is not possible if the table is not empty.
- Added the required column `requested_days` to the `leave_requests` table without a default value. This is not possible if the table is not empty.
*/
-- CreateEnum
CREATE TYPE "LeaveDaySession" AS ENUM ('am', 'pm');
-- CreateEnum
CREATE TYPE "LeaveLedgerEntryType" AS ENUM ('grant', 'reserve', 'consume', 'release', 'adjust');
-- AlterTable
ALTER TABLE "leave_requests" ADD COLUMN "attachment_mime_type" TEXT,
ADD COLUMN "attachment_original_name" TEXT,
ADD COLUMN "attachment_storage_path" TEXT,
ADD COLUMN "end_session" "LeaveDaySession" NOT NULL DEFAULT 'pm',
ADD COLUMN "leave_type_id" UUID NOT NULL,
ADD COLUMN "requested_days" DECIMAL(8,1) NOT NULL,
ADD COLUMN "start_session" "LeaveDaySession" NOT NULL DEFAULT 'am';
-- CreateTable
CREATE TABLE "leave_types" (
"id" UUID NOT NULL,
"code" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"enabled" BOOLEAN NOT NULL DEFAULT true,
"requires_attachment" BOOLEAN NOT NULL DEFAULT false,
"attachment_mime_types" JSONB,
"sort_order" INTEGER NOT NULL DEFAULT 100,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"created_by" UUID,
"updated_at" TIMESTAMP(3) NOT NULL,
"updated_by" UUID,
CONSTRAINT "leave_types_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "leave_policies" (
"id" UUID NOT NULL,
"leave_type_id" UUID NOT NULL,
"annual_quota_days" DECIMAL(8,1) NOT NULL,
"enabled" BOOLEAN NOT NULL DEFAULT true,
"description" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"created_by" UUID,
"updated_at" TIMESTAMP(3) NOT NULL,
"updated_by" UUID,
CONSTRAINT "leave_policies_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "leave_ledgers" (
"id" UUID NOT NULL,
"employee_id" UUID NOT NULL,
"leave_type_id" UUID NOT NULL,
"leave_policy_id" UUID,
"leave_request_id" UUID,
"entry_type" "LeaveLedgerEntryType" NOT NULL,
"days" DECIMAL(8,1) NOT NULL,
"period_start" DATE,
"period_end" DATE,
"note" TEXT,
"payload" JSONB,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"created_by" UUID,
CONSTRAINT "leave_ledgers_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "leave_types_code_key" ON "leave_types"("code");
-- CreateIndex
CREATE INDEX "idx_leave_types_enabled_sort_order" ON "leave_types"("enabled", "sort_order");
-- CreateIndex
CREATE UNIQUE INDEX "leave_policies_leave_type_id_key" ON "leave_policies"("leave_type_id");
-- CreateIndex
CREATE INDEX "idx_leave_policies_enabled" ON "leave_policies"("enabled");
-- CreateIndex
CREATE INDEX "idx_leave_ledger_employee_type_created_at" ON "leave_ledgers"("employee_id", "leave_type_id", "created_at");
-- CreateIndex
CREATE INDEX "leave_ledgers_leave_request_id_idx" ON "leave_ledgers"("leave_request_id");
-- CreateIndex
CREATE INDEX "idx_leave_ledger_period" ON "leave_ledgers"("period_start", "period_end");
-- CreateIndex
CREATE INDEX "idx_leave_ledger_entry_employee" ON "leave_ledgers"("entry_type", "employee_id");
-- CreateIndex
CREATE INDEX "leave_requests_leave_type_id_idx" ON "leave_requests"("leave_type_id");
-- CreateIndex
CREATE INDEX "idx_leave_owner_date_range" ON "leave_requests"("owner_id", "start_date", "end_date");
-- AddForeignKey
ALTER TABLE "leave_policies" ADD CONSTRAINT "leave_policies_leave_type_id_fkey" FOREIGN KEY ("leave_type_id") REFERENCES "leave_types"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "leave_requests" ADD CONSTRAINT "leave_requests_leave_type_id_fkey" FOREIGN KEY ("leave_type_id") REFERENCES "leave_types"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "leave_ledgers" ADD CONSTRAINT "leave_ledgers_employee_id_fkey" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "leave_ledgers" ADD CONSTRAINT "leave_ledgers_leave_type_id_fkey" FOREIGN KEY ("leave_type_id") REFERENCES "leave_types"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "leave_ledgers" ADD CONSTRAINT "leave_ledgers_leave_policy_id_fkey" FOREIGN KEY ("leave_policy_id") REFERENCES "leave_policies"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "leave_ledgers" ADD CONSTRAINT "leave_ledgers_leave_request_id_fkey" FOREIGN KEY ("leave_request_id") REFERENCES "leave_requests"("id") ON DELETE SET NULL ON UPDATE CASCADE;