import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { User } from '../user/user.entity'; import { UserRole } from '../user/user-role.enum'; import { Tenant } from './tenant.entity'; /** * Join table for User and Tenant to support Many-to-Many relationship. * A user can belong to multiple tenants with different roles in each. */ @Entity('tenant_members') export class TenantMember { @PrimaryGeneratedColumn('uuid') id: string; @Column({ name: 'user_id' }) userId: string; @ManyToOne(() => User, (user) => user.tenantMembers, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'user_id' }) user: User; @Column({ name: 'tenant_id' }) tenantId: string; @ManyToOne(() => Tenant, (tenant) => tenant.members, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'tenant_id' }) tenant: Tenant; @Column({ type: 'simple-enum', enum: UserRole, default: UserRole.USER, }) role: UserRole; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt: Date; }