feat: add project collaborators schema

Introduced `projectCollaborators` schema to define project-user relationships. Includes indices and a unique constraint for `projectId` and `userId`. Added corresponding type definitions for select and insert operations.
This commit is contained in:
Mathis H (Avnyr) 2025-05-15 20:57:13 +02:00
parent c16c8d51d2
commit 0154f9c0aa

View File

@ -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;