import { sql } from "drizzle-orm"; import { boolean, jsonb, numeric, pgTable, text, timestamp, unique, } from "drizzle-orm/pg-core"; import type { OrgConfig } from "./orgConfig.js"; export type SvixConfig = { sandbox_app_id: string; live_app_id: string; }; export type StripeConfig = { test_api_key?: string; live_api_key?: string; test_webhook_secret?: string; live_webhook_secret?: string; sandbox_success_url?: string; success_url?: string; }; export type OrgProcessorConfig = { success_url: string; }; // logo: text("logo"), // createdAt: timestamp("created_at").notNull(), // metadata: text("metadata"), export interface VersionConfig { sandbox?: string; live?: string; // sandbox_webhooks: string; // live_webhooks: string; } export const organizations = pgTable( "organizations", { id: text().primaryKey(), slug: text().notNull().unique(), // Better Auth name: text("name").notNull(), logo: text("logo"), createdAt: timestamp("createdAt", { withTimezone: true }).notNull(), metadata: text("metadata"), // Stripe default_currency: text("default_currency").default("usd"), stripe_connected: boolean("stripe_connected").default(false), stripe_config: jsonb("stripe_config").$type(), test_pkey: text("test_pkey"), live_pkey: text("live_pkey"), svix_config: jsonb("svix_config") .$type() .default(sql`'{}'::jsonb`), created_at: numeric({ mode: "number" }), config: jsonb().default({}).notNull().$type(), created_by: text("created_by"), // version: jsonb("version").$type().default(sql`'{}'::jsonb`), }, (table) => [ unique("organizations_test_pkey_key").on(table.test_pkey), unique("organizations_live_pkey_key").on(table.live_pkey), ], ); export type Organization = typeof organizations.$inferSelect;