diff --git a/backend/src/database/schema/projectCollaborators.ts b/backend/src/database/schema/projectCollaborators.ts new file mode 100644 index 0000000..d469bad --- /dev/null +++ b/backend/src/database/schema/projectCollaborators.ts @@ -0,0 +1,25 @@ +import { pgTable, uuid, timestamp, index, uniqueIndex } from 'drizzle-orm/pg-core'; +import { projects } from './projects'; +import { users } from './users'; + +/** + * Project Collaborators relation table schema + */ +export const projectCollaborators = pgTable('project_collaborators', { + id: uuid('id').primaryKey().defaultRandom(), + projectId: uuid('projectId').notNull().references(() => projects.id, { onDelete: 'cascade' }), + userId: uuid('userId').notNull().references(() => users.id, { onDelete: 'cascade' }), + createdAt: timestamp('createdAt', { withTimezone: true }).defaultNow().notNull() +}, (table) => { + return { + projectIdIdx: index('pc_projectId_idx').on(table.projectId), + userIdIdx: index('pc_userId_idx').on(table.userId), + projectUserUniqueIdx: uniqueIndex('pc_project_user_unique_idx').on(table.projectId, table.userId) + }; +}); + +/** + * ProjectCollaborators type definitions + */ +export type ProjectCollaborator = typeof projectCollaborators.$inferSelect; +export type NewProjectCollaborator = typeof projectCollaborators.$inferInsert; \ No newline at end of file