From aac478d8fdf471f5c574c3bac380cf7131dde733 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 27 Jan 2026 09:20:14 +0000 Subject: [PATCH] add unique index on uprn, element, aspect type, element instance --- .../db/schema/condition/asset_condition.ts | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/app/db/schema/condition/asset_condition.ts b/src/app/db/schema/condition/asset_condition.ts index 2b860eb9..5ce9cbbe 100644 --- a/src/app/db/schema/condition/asset_condition.ts +++ b/src/app/db/schema/condition/asset_condition.ts @@ -5,28 +5,34 @@ import { pgTable, integer, bigint, + uniqueIndex, } from "drizzle-orm/pg-core"; -import { sql } from "drizzle-orm"; import { element } from "./element"; import { aspectType } from "./aspect_type"; -export const assetCondition = pgTable("asset_condition", { - id: bigserial("id", { mode: "bigint" }).primaryKey(), +export const assetCondition = pgTable( + "asset_condition", + { + id: bigserial("id", { mode: "bigint" }).primaryKey(), - uprn: bigint("uprn", { mode: "number" }).notNull(), + uprn: bigint("uprn", { mode: "number" }).notNull(), - element: element("element").notNull(), - aspectType: aspectType("aspect_type").notNull(), + element: element("element").notNull(), + aspectType: aspectType("aspect_type").notNull(), + elementInstance: integer("element_instance"), - value: text("value"), + value: text("value"), - quantity: integer("quantity"), - installDate: date("install_date"), - renewalYear: integer("renewal_year"), + quantity: integer("quantity"), + installDate: date("install_date"), + renewalYear: integer("renewal_year"), - elementInstance: integer("element_instance"), - - sourceSystem: text("source_system"), - comments: text("comments"), -}); + sourceSystem: text("source_system"), + comments: text("comments"), + }, + (t) => ({ + uniq: uniqueIndex("asset_condition_uprn_element_aspect_instance") + .on(t.uprn, t.element, t.aspectType, t.elementInstance), + }) +);