/** * Customers. Source: `db/migrations/0001_init.sql`. */ import { pgTable, uuid, text, boolean, timestamp, varchar, bigint, jsonb, index, } from "drizzle-orm/pg-core"; import { brands } from "./brands"; export const customers = pgTable( "customers", { id: uuid("id").primaryKey().defaultRandom(), brandId: uuid("brand_id") .notNull() .references(() => brands.id, { onDelete: "cascade" }), email: text("email"), phone: text("phone"), firstName: text("first_name"), lastName: text("last_name"), fullName: text("full_name"), source: text("source").notNull().default("system"), externalId: text("external_id"), customerId: uuid("customer_id"), emailOptIn: boolean("email_opt_in").notNull().default(true), smsOptIn: boolean("sms_opt_in").notNull().default(false), emailOptInAt: timestamp("email_opt_in_at", { withTimezone: true }), smsOptInAt: timestamp("sms_opt_in_at", { withTimezone: true }), unsubscribedAt: timestamp("unsubscribed_at", { withTimezone: true }), tags: text("tags").array().notNull().default([]), metadata: jsonb("metadata").notNull().default({}), createdAt: timestamp("created_at", { withTimezone: true }) .notNull() .defaultNow(), updatedAt: timestamp("updated_at", { withTimezone: true }) .notNull() .defaultNow(), }, (t) => ({ brandIdx: index("customers_brand_idx").on(t.brandId), }), ); export type Customer = typeof customers.$inferSelect; export type NewCustomer = typeof customers.$inferInsert;