Files
boilerplate/apps/backend/src/roles/entities/role.entity.ts
Bastian Wagner 543e8273a7 initial
2026-07-16 09:49:22 +02:00

43 lines
1.1 KiB
TypeScript

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;
}