import {BaseEntity, Column, Entity, JoinTable, ManyToMany, OneToOne, PrimaryGeneratedColumn} from "typeorm";

import {AclRule} from "./AclRule";
import {User} from "./User";

@Entity({name: 'groups'})
export class Group extends BaseEntity {

  @PrimaryGeneratedColumn()
  public id: number;

  @Column()
  public name: string;

  @ManyToMany(type => User)
  @JoinTable({
    name: 'group_users',
    joinColumn: {name: 'group_id'},
    inverseJoinColumn: {name: 'user_id'}
  })
  public memberUsers: User[];

  @ManyToMany(type => Group)
  @JoinTable({
    name: 'group_groups',
    joinColumn: {name: 'group_id'},
    inverseJoinColumn: {name: 'subgroup_id'}
  })
  public memberGroups: Group[];

  @OneToOne(type => AclRule, aclRule => aclRule.group)
  public aclRule: AclRule;
}