52 lines
955 B
TypeScript
52 lines
955 B
TypeScript
import { UserMetaEntity } from '@freeblox/shared';
|
|
import { Exclude, Expose } from 'class-transformer';
|
|
import {
|
|
Column,
|
|
Entity,
|
|
JoinColumn,
|
|
JoinTable,
|
|
ManyToMany,
|
|
PrimaryGeneratedColumn,
|
|
Tree,
|
|
TreeChildren,
|
|
TreeParent,
|
|
} from 'typeorm';
|
|
import { PrivilegeEntity } from './privilege.entity';
|
|
|
|
@Entity('roles')
|
|
@Exclude()
|
|
@Tree('materialized-path')
|
|
export class RoleEntity extends UserMetaEntity {
|
|
@PrimaryGeneratedColumn()
|
|
@Expose()
|
|
id: number;
|
|
|
|
@Column()
|
|
@Expose()
|
|
role: string;
|
|
|
|
@Column({ name: 'parent_id' })
|
|
@Expose()
|
|
parentId: number;
|
|
|
|
@TreeParent()
|
|
@JoinColumn({ name: 'parent_id' })
|
|
parent: RoleEntity;
|
|
|
|
@TreeChildren()
|
|
children: RoleEntity[];
|
|
|
|
@ManyToMany(() => PrivilegeEntity, { eager: true })
|
|
@Expose()
|
|
@JoinTable({
|
|
name: 'role_privilege',
|
|
joinColumn: {
|
|
name: 'role_id',
|
|
},
|
|
inverseJoinColumn: {
|
|
name: 'privilege_id',
|
|
},
|
|
})
|
|
privileges: PrivilegeEntity[];
|
|
}
|