fix: retrofit AssetItem.model to modelId FK
AssetItem.model was a free-text string with no referential integrity. Now a required FK to AssetModel, mirroring the Request.employeeId and License.vendorId retrofit precedent (no backfill needed, no real AssetItem data existed).
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `model` on the `asset_items` table. All the data in the column will be lost.
|
||||
- Added the required column `model_id` to the `asset_items` table without a default value. This is not possible if the table is not empty.
|
||||
|
||||
*/
|
||||
-- AlterTable
|
||||
ALTER TABLE "asset_items" DROP COLUMN "model",
|
||||
ADD COLUMN "model_id" UUID NOT NULL;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "asset_items" ADD CONSTRAINT "asset_items_model_id_fkey" FOREIGN KEY ("model_id") REFERENCES "asset_models"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
+14
-1
@@ -97,10 +97,20 @@ enum AssetItemStatus {
|
||||
// a formal PO (e.g. historical stock predating the system). Set at
|
||||
// intake/creation time only — no update endpoint for this field yet, same
|
||||
// precedent as License.vendorId being set-at-creation with no PATCH.
|
||||
// `modelId` was a free-text `model` String until the "Cập nhật 2026-08-02
|
||||
// (2)" retrofit (docs/asset-license-management.md's "Ràng buộc dữ liệu"
|
||||
// bullet) — same precedent as Request.employeeId/License.vendorId (string
|
||||
// -> FK once the referenced entity existed). No production `AssetItem` data
|
||||
// existed at the time of this change, so this was a plain column-type
|
||||
// migration, not a backfill. Required (not nullable) — every AssetItem must
|
||||
// belong to a real AssetModel. AssetItem deliberately does NOT carry its own
|
||||
// `categoryId` — category is derived via `modelId -> AssetModel.categoryId`
|
||||
// to avoid two sources of truth that could drift apart.
|
||||
model AssetItem {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
serialNumber String @unique @map("serial_number")
|
||||
model String
|
||||
modelId String @map("model_id") @db.Uuid
|
||||
model AssetModel @relation(fields: [modelId], references: [id])
|
||||
purchaseDate DateTime @map("purchase_date") @db.Date
|
||||
warrantyEndDate DateTime? @map("warranty_end_date") @db.Date
|
||||
status AssetItemStatus @default(in_stock)
|
||||
@@ -327,6 +337,9 @@ model AssetModel {
|
||||
name String
|
||||
specs Json @default("{}")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
// Back-relation for the AssetItem.model -> AssetItem.modelId retrofit —
|
||||
// see "Cập nhật 2026-08-02 (2)" in docs/asset-license-management.md.
|
||||
assetItems AssetItem[]
|
||||
|
||||
@@map("asset_models")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user