/* 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;