Links Employee to exactly one of AssetItem/License (XOR enforced at the Zod layer, not built yet) via nullable FKs, plus assignedAt/returnedAt/ signedAt timestamps. See docs/asset-license-management.md's "Assignment" section for the full spec.
23 lines
968 B
SQL
23 lines
968 B
SQL
-- CreateTable
|
|
CREATE TABLE "assignments" (
|
|
"id" UUID NOT NULL,
|
|
"employee_id" UUID NOT NULL,
|
|
"asset_item_id" UUID,
|
|
"license_id" UUID,
|
|
"assigned_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"returned_at" TIMESTAMPTZ(6),
|
|
"signed_at" TIMESTAMPTZ(6),
|
|
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "assignments_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "assignments" ADD CONSTRAINT "assignments_employee_id_fkey" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "assignments" ADD CONSTRAINT "assignments_asset_item_id_fkey" FOREIGN KEY ("asset_item_id") REFERENCES "asset_items"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "assignments" ADD CONSTRAINT "assignments_license_id_fkey" FOREIGN KEY ("license_id") REFERENCES "licenses"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|