import {
  BelongsTo,
  Column,
  DataType,
  ForeignKey,
  Model,
  Table,
} from 'sequelize-typescript';
import { RentalHirerChangeRequestModel } from './rental-hirer-change-request.entity';
import { JointHirerModel } from './joint-hirer.entity';
import { IHirerChangeRequestRemoveHirerAttr } from '../interfaces/hirer-change-request-remove-hirer-attr.interface';

@Table({
  tableName: 'hirerChangeRequest_RemoveHirer',
  timestamps: false,
})
export class HirerChangeRequestRemoveHirerModel
  extends Model
  implements IHirerChangeRequestRemoveHirerAttr
{
  @Column({
    primaryKey: true,
    allowNull: false,
    type: DataType.STRING(30),
  })
  RemoveHirerId: string;

  @ForeignKey(() => RentalHirerChangeRequestModel)
  @Column({
    allowNull: false,
    type: DataType.STRING(30),
  })
  RequestId: string;

  @ForeignKey(() => JointHirerModel)
  @Column({
    allowNull: false,
    type: DataType.STRING(30),
  })
  TargetHirerId: string;

  @BelongsTo(() => RentalHirerChangeRequestModel)
  RentalHirerChangeRequest: RentalHirerChangeRequestModel;

  @BelongsTo(() => JointHirerModel, { foreignKey: 'TargetHirerId' })
  TargetHirer: JointHirerModel;
}
