import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToMany, JoinTable, } from 'typeorm'; import { Permission } from './permission.entity'; import { User } from './user.entity'; @Entity('roles') export class Role { @PrimaryGeneratedColumn() id: number; @Column({ type: 'varchar', length: 30, unique: true }) name: string; @Column({ type: 'varchar', length: 200, nullable: true }) description: string; @Column({ name: 'is_system', type: 'boolean', default: false }) isSystem: boolean; @Column({ type: 'tinyint', default: 1 }) status: number; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt: Date; @ManyToMany(() => Permission) @JoinTable({ name: 'role_permissions', joinColumn: { name: 'role_id', referencedColumnName: 'id' }, inverseJoinColumn: { name: 'permission_id', referencedColumnName: 'id' }, }) permissions: Permission[]; @ManyToMany(() => User, (user) => user.roles) users: User[]; }