import {
    Column,
    CreateDateColumn,
    Entity,
    Index,
    OneToMany,
    PrimaryGeneratedColumn,
    UpdateDateColumn,
  } from 'typeorm';
  import { RolePermission } from './role-permission.entity';
  import { UserRole } from './user-role.entity';

  @Entity({ name: 'roles' })
  export class Role {
    @PrimaryGeneratedColumn('uuid')
    id!: string;

    @Index({ unique: true })
    @Column({ type: 'varchar', length: 100 })
    name!: string;

    @Column({ type: 'varchar', length: 200, nullable: true })
    description?: string;

    @Column({ default: false })
    isSystem!: boolean;

    @OneToMany(() => RolePermission, (rp) => rp.role)
    rolePermissions!: RolePermission[];

    @OneToMany(() => UserRole, (ur) => ur.role)
    userRoles!: UserRole[];

    @CreateDateColumn()
    createdAt!: Date;

    @UpdateDateColumn()
    updatedAt!: Date;
  }
  