import { pgTable, uuid, text, timestamp, unique } from 'drizzle-orm/pg-core'; import { organizations } from './organizations'; export const projects = pgTable( 'projects', { id: uuid('id').primaryKey().defaultRandom(), // Project details name: text('name').notNull(), slug: text('slug').notNull(), // URL-friendly identifier for storage paths organizationId: uuid('organization_id') .notNull() .references(() => organizations.id, { onDelete: 'cascade' }), // Timestamps createdAt: timestamp('created_at').notNull().defaultNow(), updatedAt: timestamp('updated_at') .notNull() .defaultNow() .$onUpdate(() => new Date()), }, (table) => ({ // Unique constraint: one project slug per organization uniqueOrgProjectSlug: unique().on(table.organizationId, table.slug), }), ); export type Project = typeof projects.$inferSelect; export type NewProject = typeof projects.$inferInsert;