/*
  Warnings:

  - The values [Redo] on the enum `RequestWorkStatus` will be removed. If these variants are still used in the database, this will fail.
  - You are about to drop the column `taskOrderId` on the `RequestWorkStepStatus` table. All the data in the column will be lost.
  - You are about to drop the column `taskStatus` on the `TaskOrder` table. All the data in the column will be lost.

*/
-- CreateEnum
CREATE TYPE "TaskOrderStatus" AS ENUM ('Pending', 'InProgress', 'Validate', 'Complete', 'Canceled');

-- AlterEnum
BEGIN;
CREATE TYPE "RequestWorkStatus_new" AS ENUM ('Pending', 'Ready', 'Waiting', 'InProgress', 'Validate', 'Ended', 'Completed', 'Canceled');
ALTER TABLE "RequestWorkStepStatus" ALTER COLUMN "workStatus" DROP DEFAULT;
ALTER TABLE "RequestWorkStepStatus" ALTER COLUMN "workStatus" TYPE "RequestWorkStatus_new" USING ("workStatus"::text::"RequestWorkStatus_new");
ALTER TYPE "RequestWorkStatus" RENAME TO "RequestWorkStatus_old";
ALTER TYPE "RequestWorkStatus_new" RENAME TO "RequestWorkStatus";
DROP TYPE "RequestWorkStatus_old";
ALTER TABLE "RequestWorkStepStatus" ALTER COLUMN "workStatus" SET DEFAULT 'Pending';
COMMIT;

-- AlterEnum
ALTER TYPE "TaskStatus" ADD VALUE 'Redo';

-- DropForeignKey
ALTER TABLE "RequestWorkStepStatus" DROP CONSTRAINT "RequestWorkStepStatus_taskOrderId_fkey";

-- AlterTable
ALTER TABLE "RequestWorkStepStatus" DROP COLUMN "taskOrderId";

-- AlterTable
ALTER TABLE "TaskOrder" DROP COLUMN "taskStatus",
ADD COLUMN     "taskOrderStatus" "TaskOrderStatus" NOT NULL DEFAULT 'Pending';

-- CreateTable
CREATE TABLE "Task" (
    "id" TEXT NOT NULL,
    "taskStatus" "TaskStatus" NOT NULL DEFAULT 'Pending',
    "step" INTEGER NOT NULL,
    "requestWorkId" TEXT NOT NULL,
    "taskOrderId" TEXT NOT NULL,

    CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
);

-- AddForeignKey
ALTER TABLE "Task" ADD CONSTRAINT "Task_step_requestWorkId_fkey" FOREIGN KEY ("step", "requestWorkId") REFERENCES "RequestWorkStepStatus"("step", "requestWorkId") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "Task" ADD CONSTRAINT "Task_taskOrderId_fkey" FOREIGN KEY ("taskOrderId") REFERENCES "TaskOrder"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
