import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn, Unique, UpdateDateColumn, } from 'typeorm'; import { PermissionEntity } from './permission.entity'; import { UserEntity } from '../../users/entities/user.entity'; @Entity('roles') @Unique('uq_roles_name', ['name']) export class RoleEntity { @PrimaryGeneratedColumn('uuid') id!: string; @Column({ type: 'varchar', length: 80 }) name!: string; @Column({ type: 'boolean', default: false }) protected!: boolean; @ManyToMany(() => PermissionEntity, { eager: true }) @JoinTable({ name: 'role_permissions', joinColumn: { name: 'role_id', referencedColumnName: 'id' }, inverseJoinColumn: { name: 'permission_id', referencedColumnName: 'id' }, }) permissions!: PermissionEntity[]; @ManyToMany(() => UserEntity, (user) => user.roles) users!: UserEntity[]; @CreateDateColumn({ name: 'created_at', type: 'datetime', precision: 3 }) createdAt!: Date; @UpdateDateColumn({ name: 'updated_at', type: 'datetime', precision: 3 }) updatedAt!: Date; }