From 653eef846df79a8f9b0439fa9ee9481e181bcaf9 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:30:22 +0700 Subject: [PATCH] feat: add migration --- .../20240403022955_init/migration.sql | 450 ++++++++++++++++++ 1 file changed, 450 insertions(+) create mode 100644 prisma/migrations/20240403022955_init/migration.sql diff --git a/prisma/migrations/20240403022955_init/migration.sql b/prisma/migrations/20240403022955_init/migration.sql new file mode 100644 index 0000000..623aef0 --- /dev/null +++ b/prisma/migrations/20240403022955_init/migration.sql @@ -0,0 +1,450 @@ +-- CreateEnum +CREATE TYPE "Status" AS ENUM ('CREATED', 'USED'); + +-- CreateTable +CREATE TABLE "Province" ( + "id" TEXT NOT NULL, + "nameTH" TEXT NOT NULL, + "nameEN" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Province_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "District" ( + "id" TEXT NOT NULL, + "nameTH" TEXT NOT NULL, + "nameEN" TEXT NOT NULL, + "provinceId" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "District_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "SubDistrict" ( + "id" TEXT NOT NULL, + "nameTH" TEXT NOT NULL, + "nameEN" TEXT NOT NULL, + "zipCode" TEXT NOT NULL, + "districtId" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "SubDistrict_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Branch" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "taxNo" TEXT NOT NULL, + "nameTH" TEXT NOT NULL, + "nameEN" TEXT NOT NULL, + "addressTH" TEXT NOT NULL, + "addressEN" TEXT NOT NULL, + "provinceId" TEXT, + "districtId" TEXT, + "subDistrictId" TEXT, + "zipCode" TEXT NOT NULL, + "email" TEXT NOT NULL, + "telephoneNo" TEXT NOT NULL, + "latitude" TEXT NOT NULL, + "longitude" TEXT NOT NULL, + "isHeadOffice" BOOLEAN NOT NULL DEFAULT false, + "headOfficeId" TEXT, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Branch_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "BranchContact" ( + "id" TEXT NOT NULL, + "telephoneNo" TEXT NOT NULL, + "lineId" TEXT NOT NULL, + "branchId" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "BranchContact_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "BranchUser" ( + "id" TEXT NOT NULL, + "branchId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "BranchUser_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "keycloakId" TEXT NOT NULL, + "code" TEXT NOT NULL, + "firstNameTH" TEXT NOT NULL, + "firstNameEN" TEXT NOT NULL, + "lastNameTH" TEXT NOT NULL, + "lastNameEN" TEXT NOT NULL, + "addressTH" TEXT NOT NULL, + "addressEN" TEXT NOT NULL, + "provinceId" TEXT, + "districtId" TEXT, + "subDistrictId" TEXT, + "zipCode" TEXT NOT NULL, + "email" TEXT NOT NULL, + "telephoneNo" TEXT NOT NULL, + "registrationNo" TEXT NOT NULL, + "startDate" TIMESTAMP(3) NOT NULL, + "retireDate" TIMESTAMP(3) NOT NULL, + "userType" TEXT NOT NULL, + "userRole" TEXT NOT NULL, + "discountCondition" TEXT NOT NULL, + "licenseNo" TEXT NOT NULL, + "licenseIssueDate" TIMESTAMP(3) NOT NULL, + "licenseExpireDate" TIMESTAMP(3) NOT NULL, + "sourceNationality" TEXT NOT NULL, + "importNationality" TEXT NOT NULL, + "trainingPlace" TEXT NOT NULL, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Customer" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "customerType" TEXT NOT NULL, + "customerNameTH" TEXT NOT NULL, + "customerNameEN" TEXT NOT NULL, + "imageUrl" TEXT, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Customer_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "CustomerBranch" ( + "id" TEXT NOT NULL, + "branchNo" TEXT NOT NULL, + "legalPersonNo" TEXT NOT NULL, + "nameTH" TEXT NOT NULL, + "nameEN" TEXT NOT NULL, + "customerId" TEXT NOT NULL, + "taxNo" TEXT NOT NULL, + "registerName" TEXT NOT NULL, + "registerDate" TIMESTAMP(3) NOT NULL, + "authorizedCapital" TEXT NOT NULL, + "addressEN" TEXT NOT NULL, + "provinceId" TEXT, + "districtId" TEXT, + "subDistrictId" TEXT, + "zipCode" TEXT NOT NULL, + "email" TEXT NOT NULL, + "telephoneNo" TEXT NOT NULL, + "latitude" TEXT NOT NULL, + "longitude" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "CustomerBranch_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Employee" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "fullNameTH" TEXT NOT NULL, + "fullNameEN" TEXT NOT NULL, + "dateOfBirth" TIMESTAMP(3) NOT NULL, + "gender" TEXT NOT NULL, + "nationality" TEXT NOT NULL, + "addressTH" TEXT NOT NULL, + "addressEN" TEXT NOT NULL, + "provinceId" TEXT, + "districtId" TEXT, + "subDistrictId" TEXT, + "zipCode" TEXT NOT NULL, + "email" TEXT NOT NULL, + "telephoneNo" TEXT NOT NULL, + "arrivalBarricade" TEXT NOT NULL, + "arrivalCardNo" TEXT NOT NULL, + "profileImageUrl" TEXT NOT NULL, + "customerBranchId" TEXT, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Employee_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EmployeeCheckup" ( + "id" TEXT NOT NULL, + "employeeId" TEXT NOT NULL, + "checkupResult" TEXT NOT NULL, + "checkupType" TEXT NOT NULL, + "provinceId" TEXT, + "hospitalName" TEXT NOT NULL, + "remark" TEXT NOT NULL, + "medicalBenefitScheme" TEXT NOT NULL, + "insuranceCompany" TEXT NOT NULL, + "coverageStartDate" TIMESTAMP(3) NOT NULL, + "coverageExpireDate" TIMESTAMP(3) NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "EmployeeCheckup_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EmployeeWork" ( + "id" TEXT NOT NULL, + "employeeId" TEXT NOT NULL, + "ownerName" TEXT NOT NULL, + "positionName" TEXT NOT NULL, + "jobType" TEXT NOT NULL, + "workplace" TEXT NOT NULL, + "workPermitNo" TEXT NOT NULL, + "workPermitIssuDate" TIMESTAMP(3) NOT NULL, + "workPermitExpireDate" TIMESTAMP(3) NOT NULL, + "workEndDate" TIMESTAMP(3) NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "EmployeeWork_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EmployeeOtherInfo" ( + "id" TEXT NOT NULL, + "employeeId" TEXT NOT NULL, + "citizenId" TEXT NOT NULL, + "fatherFullName" TEXT NOT NULL, + "motherFullName" TEXT NOT NULL, + "birthPlace" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "EmployeeOtherInfo_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Service" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "name" TEXT NOT NULL, + "detail" TEXT NOT NULL, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Service_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Work" ( + "id" TEXT NOT NULL, + "order" INTEGER NOT NULL, + "name" TEXT NOT NULL, + "serviceId" TEXT NOT NULL, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Work_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "WorkProduct" ( + "id" TEXT NOT NULL, + "workId" TEXT NOT NULL, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "WorkProduct_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProductGroup" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "name" TEXT NOT NULL, + "detail" TEXT NOT NULL, + "remark" TEXT NOT NULL, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "ProductGroup_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProductType" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "name" TEXT NOT NULL, + "detail" TEXT NOT NULL, + "remark" TEXT NOT NULL, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "ProductType_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Product" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "name" TEXT NOT NULL, + "detail" TEXT NOT NULL, + "process" TEXT NOT NULL, + "price" INTEGER NOT NULL, + "agentPrice" INTEGER NOT NULL, + "serviceCharge" INTEGER NOT NULL, + "imageUrl" TEXT NOT NULL, + "status" "Status" NOT NULL DEFAULT 'CREATED', + "productTypeId" TEXT, + "productGroupId" TEXT, + "createdBy" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updateBy" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Product_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "District" ADD CONSTRAINT "District_provinceId_fkey" FOREIGN KEY ("provinceId") REFERENCES "Province"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "SubDistrict" ADD CONSTRAINT "SubDistrict_districtId_fkey" FOREIGN KEY ("districtId") REFERENCES "District"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Branch" ADD CONSTRAINT "Branch_provinceId_fkey" FOREIGN KEY ("provinceId") REFERENCES "Province"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Branch" ADD CONSTRAINT "Branch_districtId_fkey" FOREIGN KEY ("districtId") REFERENCES "District"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Branch" ADD CONSTRAINT "Branch_subDistrictId_fkey" FOREIGN KEY ("subDistrictId") REFERENCES "SubDistrict"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Branch" ADD CONSTRAINT "Branch_headOfficeId_fkey" FOREIGN KEY ("headOfficeId") REFERENCES "Branch"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BranchContact" ADD CONSTRAINT "BranchContact_branchId_fkey" FOREIGN KEY ("branchId") REFERENCES "Branch"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BranchUser" ADD CONSTRAINT "BranchUser_branchId_fkey" FOREIGN KEY ("branchId") REFERENCES "Branch"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BranchUser" ADD CONSTRAINT "BranchUser_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "User" ADD CONSTRAINT "User_provinceId_fkey" FOREIGN KEY ("provinceId") REFERENCES "Province"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "User" ADD CONSTRAINT "User_districtId_fkey" FOREIGN KEY ("districtId") REFERENCES "District"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "User" ADD CONSTRAINT "User_subDistrictId_fkey" FOREIGN KEY ("subDistrictId") REFERENCES "SubDistrict"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CustomerBranch" ADD CONSTRAINT "CustomerBranch_customerId_fkey" FOREIGN KEY ("customerId") REFERENCES "Customer"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CustomerBranch" ADD CONSTRAINT "CustomerBranch_provinceId_fkey" FOREIGN KEY ("provinceId") REFERENCES "Province"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CustomerBranch" ADD CONSTRAINT "CustomerBranch_districtId_fkey" FOREIGN KEY ("districtId") REFERENCES "District"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CustomerBranch" ADD CONSTRAINT "CustomerBranch_subDistrictId_fkey" FOREIGN KEY ("subDistrictId") REFERENCES "SubDistrict"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Employee" ADD CONSTRAINT "Employee_provinceId_fkey" FOREIGN KEY ("provinceId") REFERENCES "Province"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Employee" ADD CONSTRAINT "Employee_districtId_fkey" FOREIGN KEY ("districtId") REFERENCES "District"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Employee" ADD CONSTRAINT "Employee_subDistrictId_fkey" FOREIGN KEY ("subDistrictId") REFERENCES "SubDistrict"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Employee" ADD CONSTRAINT "Employee_customerBranchId_fkey" FOREIGN KEY ("customerBranchId") REFERENCES "CustomerBranch"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EmployeeCheckup" ADD CONSTRAINT "EmployeeCheckup_employeeId_fkey" FOREIGN KEY ("employeeId") REFERENCES "Employee"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EmployeeCheckup" ADD CONSTRAINT "EmployeeCheckup_provinceId_fkey" FOREIGN KEY ("provinceId") REFERENCES "Province"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EmployeeWork" ADD CONSTRAINT "EmployeeWork_employeeId_fkey" FOREIGN KEY ("employeeId") REFERENCES "Employee"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EmployeeOtherInfo" ADD CONSTRAINT "EmployeeOtherInfo_employeeId_fkey" FOREIGN KEY ("employeeId") REFERENCES "Employee"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Work" ADD CONSTRAINT "Work_serviceId_fkey" FOREIGN KEY ("serviceId") REFERENCES "Service"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "WorkProduct" ADD CONSTRAINT "WorkProduct_workId_fkey" FOREIGN KEY ("workId") REFERENCES "Work"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Product" ADD CONSTRAINT "Product_productTypeId_fkey" FOREIGN KEY ("productTypeId") REFERENCES "ProductType"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Product" ADD CONSTRAINT "Product_productGroupId_fkey" FOREIGN KEY ("productGroupId") REFERENCES "ProductGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;