/** * Column definition helpers for defineTable. * * These produce config objects that defineTable maps to Drizzle column builders. * Plugin developers use these instead of importing from drizzle-orm/pg-core directly. * * import { defineTable, column } from "@porulle/db"; * * export const giftCards = defineTable("gift_cards", { * // Per-org unique (default): UNIQUE (organization_id, code) * code: column.text({ unique: true }), * // Globally unique across all tenants: UNIQUE (public_code) * publicCode: column.text({ unique: "global" }), * balance: column.integer(), * status: column.text({ enum: ["active", "disabled"], default: "active" }), * }); * * Child tables (FK to org-scoped parent) have no organizationId; unique: true * creates UNIQUE (col) on the child column. */ export type ColumnUnique = boolean | "global"; export interface TextColumnDef { readonly _type: "text"; unique?: ColumnUnique; optional?: boolean; enum?: readonly string[]; default?: string; } export interface IntegerColumnDef { readonly _type: "integer"; unique?: ColumnUnique; optional?: boolean; default?: number; } export interface BooleanColumnDef { readonly _type: "boolean"; optional?: boolean; default?: boolean; } export interface UuidColumnDef { readonly _type: "uuid"; optional?: boolean; references?: unknown; } export interface TimestampColumnDef { readonly _type: "timestamp"; optional?: boolean; default?: "now"; } export interface JsonColumnDef { readonly _type: "json"; optional?: boolean; default?: unknown; } export type ColumnDef = TextColumnDef | IntegerColumnDef | BooleanColumnDef | UuidColumnDef | TimestampColumnDef | JsonColumnDef; export declare const column: { text: (opts?: Omit) => TextColumnDef; integer: (opts?: Omit) => IntegerColumnDef; boolean: (opts?: Omit) => BooleanColumnDef; uuid: (opts?: Omit) => UuidColumnDef; timestamp: (opts?: Omit) => TimestampColumnDef; json: (opts?: Omit) => JsonColumnDef; }; //# sourceMappingURL=column.d.ts.map