From 6c0ff8a1d48a100d1ed2c4d75e98a932915e6d22 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 17 Oct 2025 14:20:48 +0000 Subject: [PATCH] property schema --- .../db/schema/crm/property_status_tracker.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/app/db/schema/crm/property_status_tracker.ts diff --git a/src/app/db/schema/crm/property_status_tracker.ts b/src/app/db/schema/crm/property_status_tracker.ts new file mode 100644 index 0000000..f91a887 --- /dev/null +++ b/src/app/db/schema/crm/property_status_tracker.ts @@ -0,0 +1,29 @@ +import { pgTable, uuid, text, bigint, timestamp } from "drizzle-orm/pg-core"; +import { InferModel } from "drizzle-orm"; +import { property } from "../property"; +import { portfolio } from "../portfolio"; + +export const propertyStatusTracker = pgTable("property_status_tracker", { + id: uuid("id").defaultRandom().primaryKey(), + + hubspotDealId: text("hubspot_deal_id").notNull(), + + // foreign keys + propertyId: bigint("property_id", { mode: "bigint" }) + .notNull() + .references(() => property.id, { onDelete: "cascade" }), + portfolioId: bigint("portfolio_id", { mode: "bigint" }) + .notNull() + .references(() => portfolio.id, { onDelete: "cascade" }), + + hubspotPipelineId: text("hubspot_pipeline_id").notNull(), + + createdAt: timestamp("created_at", { precision: 6, withTimezone: true }) + .defaultNow() + .notNull(), + + updatedAt: timestamp("updated_at", { precision: 6, withTimezone: true }) + .defaultNow() + .$onUpdate(() => new Date()) + .notNull(), +});