29 行
1.7 KiB
SQL
29 行
1.7 KiB
SQL
CREATE TYPE "AssetType" AS ENUM ('fixed_asset', 'electronic_document', 'electronic_system', 'code_repository', 'backup_media');
|
|
|
|
CREATE TYPE "AssetSensitivityLevel" AS ENUM ('public_candidate', 'internal', 'confidential', 'strictly_confidential');
|
|
|
|
ALTER TABLE "asset_cards"
|
|
ADD COLUMN "asset_type" "AssetType" NOT NULL DEFAULT 'fixed_asset',
|
|
ADD COLUMN "sensitivity_level" "AssetSensitivityLevel" NOT NULL DEFAULT 'internal',
|
|
ADD COLUMN "owner_employee_id" UUID,
|
|
ADD COLUMN "keeper_employee_id" UUID,
|
|
ADD COLUMN "archive_location" TEXT,
|
|
ADD COLUMN "external_ref" TEXT,
|
|
ADD COLUMN "source_hash" TEXT,
|
|
ADD COLUMN "verification_no" TEXT,
|
|
ADD COLUMN "confidentiality_note" TEXT,
|
|
ADD COLUMN "metadata" JSONB,
|
|
ADD COLUMN "last_verified_at" DATE,
|
|
ADD COLUMN "expires_at" DATE;
|
|
|
|
CREATE UNIQUE INDEX "asset_cards_verification_no_key" ON "asset_cards"("verification_no");
|
|
CREATE INDEX "idx_asset_cards_asset_type" ON "asset_cards"("asset_type");
|
|
CREATE INDEX "idx_asset_cards_sensitivity" ON "asset_cards"("sensitivity_level");
|
|
CREATE INDEX "idx_asset_cards_owner" ON "asset_cards"("owner_employee_id");
|
|
CREATE INDEX "idx_asset_cards_keeper" ON "asset_cards"("keeper_employee_id");
|
|
CREATE INDEX "idx_asset_cards_source_hash" ON "asset_cards"("source_hash");
|
|
CREATE INDEX "idx_asset_cards_last_verified" ON "asset_cards"("last_verified_at");
|
|
|
|
ALTER TABLE "asset_cards" ADD CONSTRAINT "asset_cards_owner_employee_id_fkey" FOREIGN KEY ("owner_employee_id") REFERENCES "employees"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
ALTER TABLE "asset_cards" ADD CONSTRAINT "asset_cards_keeper_employee_id_fkey" FOREIGN KEY ("keeper_employee_id") REFERENCES "employees"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|