Files
NetForge/prisma/migrations/20260305000851_add_technician_profiles/migration.sql
kevin-asprec 230b0ec683 feat(03-05): TechnicianProfile/JobTypeRate schema, migration, tenant scoping
- Added CompensationModel enum (PER_JOB, SALARY, HYBRID)
- Added TechnicianProfile model with userId FK, skills[], zoneId?, compensationModel, monthlySalary?, isActive, @@unique([tenantId,userId])
- Added JobTypeRate model with jobType, rate, isActive, @@unique([tenantId,jobType])
- Added reverse relations: User.technicianProfiles[], Zone.technicianProfiles[]
- Applied migration: 20260305000851_add_technician_profiles
- Added technicianProfile and jobTypeRate to TENANT_SCOPED_MODELS with full 12-operation extension blocks
2026-03-05 08:10:46 +08:00

52 lines
1.7 KiB
SQL

-- CreateEnum
CREATE TYPE "CompensationModel" AS ENUM ('PER_JOB', 'SALARY', 'HYBRID');
-- CreateTable
CREATE TABLE "TechnicianProfile" (
"id" TEXT NOT NULL,
"tenantId" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"phone" TEXT,
"skills" TEXT[],
"zoneId" TEXT,
"compensationModel" "CompensationModel" NOT NULL DEFAULT 'PER_JOB',
"monthlySalary" DECIMAL(10,2),
"isActive" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "TechnicianProfile_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "JobTypeRate" (
"id" TEXT NOT NULL,
"tenantId" TEXT NOT NULL,
"jobType" TEXT NOT NULL,
"rate" DECIMAL(10,2) NOT NULL,
"description" TEXT,
"isActive" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "JobTypeRate_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "TechnicianProfile_tenantId_idx" ON "TechnicianProfile"("tenantId");
-- CreateIndex
CREATE UNIQUE INDEX "TechnicianProfile_tenantId_userId_key" ON "TechnicianProfile"("tenantId", "userId");
-- CreateIndex
CREATE INDEX "JobTypeRate_tenantId_idx" ON "JobTypeRate"("tenantId");
-- CreateIndex
CREATE UNIQUE INDEX "JobTypeRate_tenantId_jobType_key" ON "JobTypeRate"("tenantId", "jobType");
-- AddForeignKey
ALTER TABLE "TechnicianProfile" ADD CONSTRAINT "TechnicianProfile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "TechnicianProfile" ADD CONSTRAINT "TechnicianProfile_zoneId_fkey" FOREIGN KEY ("zoneId") REFERENCES "Zone"("id") ON DELETE SET NULL ON UPDATE CASCADE;