0a9588abb7
- Add pagination support to findAll (page, limit query params) - Add findByTemplateId method to service - Add GET /by-template/:templateId endpoint to controller - Service already includes CRUD for QuestionBank and QuestionBankItem
50 lines
1.1 KiB
TypeScript
50 lines
1.1 KiB
TypeScript
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;
|
|
}
|