36 lines
881 B
TypeScript
36 lines
881 B
TypeScript
import {
|
|
Column,
|
|
Entity,
|
|
Index,
|
|
JoinColumn,
|
|
ManyToOne,
|
|
PrimaryColumn,
|
|
} from 'typeorm';
|
|
import { Role } from './role.entity';
|
|
import { User } from './user.entity';
|
|
|
|
@Entity({ name: 'user_roles' })
|
|
@Index('idx_user_roles_user_id', ['userId'])
|
|
@Index('idx_user_roles_role_id', ['roleId'])
|
|
export class UserRole {
|
|
@PrimaryColumn({ name: 'user_id', type: 'uuid' })
|
|
userId!: string;
|
|
|
|
@PrimaryColumn({ name: 'role_id', type: 'uuid' })
|
|
roleId!: string;
|
|
|
|
@Column({ name: 'assigned_at', type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP' })
|
|
assignedAt!: Date;
|
|
|
|
@Column({ name: 'assigned_by', type: 'uuid', nullable: true })
|
|
assignedBy!: string | null;
|
|
|
|
@ManyToOne(() => User, { onDelete: 'CASCADE' })
|
|
@JoinColumn({ name: 'user_id' })
|
|
user!: User;
|
|
|
|
@ManyToOne(() => Role, { onDelete: 'RESTRICT' })
|
|
@JoinColumn({ name: 'role_id' })
|
|
role!: Role;
|
|
}
|