Files
pn-new-crm/src/lib/db/schema/ports.ts
Matt 0e8feb1073 chore: prettier format pass on branch files
Auto-format all files modified during the documents-hub-split feature
branch that were not yet aligned with the project's Prettier config
(single quotes, semicolons, trailing commas).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:01:47 +02:00

53 lines
1.6 KiB
TypeScript

import { pgTable, text, boolean, timestamp, jsonb, uniqueIndex } from 'drizzle-orm/pg-core';
// Port settings type for JSONB column
export type PortSettings = {
berth_status_rules?: Array<{
trigger: string;
mode: 'auto' | 'suggest' | 'off';
target_status: string;
}>;
follow_up_defaults?: {
reminder_days: number;
send_window_hours: number[];
cooldown_days: number;
};
eoi_reminder_settings?: {
schedule: string[];
cooldown_days: number;
send_window_hours: number[];
};
[key: string]: unknown;
};
export type PortBranding = {
logo_url?: string;
primary_color?: string;
secondary_color?: string;
font_family?: string;
[key: string]: unknown;
};
export const ports = pgTable(
'ports',
{
id: text('id')
.primaryKey()
.$defaultFn(() => crypto.randomUUID()),
name: text('name').notNull(),
slug: text('slug').notNull(),
logoUrl: text('logo_url'),
primaryColor: text('primary_color'),
defaultCurrency: text('default_currency').notNull().default('USD'),
timezone: text('timezone').notNull().default('America/Anguilla'),
settings: jsonb('settings').$type<PortSettings>().notNull().default({}),
isActive: boolean('is_active').notNull().default(true),
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
updatedAt: timestamp('updated_at', { withTimezone: true }).notNull().defaultNow(),
},
(table) => [uniqueIndex('ports_slug_idx').on(table.slug)],
);
export type Port = typeof ports.$inferSelect;
export type NewPort = typeof ports.$inferInsert;