/* eslint-disable indent */
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  UpdateDateColumn,
  JoinTable,
  ManyToMany,
} from 'typeorm';
import { DebitEntity } from './debit-entity';
import { EustIssueType, EustIssueUnit } from '../../../domain/eust-issue';

@Entity('eust-issue')
export class EustIssueEntity {
  @PrimaryGeneratedColumn('uuid')
  id!: string;

  @ManyToMany(() => DebitEntity, { onDelete: 'CASCADE', onUpdate: 'CASCADE', eager: true })
  @JoinTable()
  debits?: DebitEntity[];

  @Column({ nullable: true, name: 'invoice_id' })
  invoiceId?: string;

  @Column({ enum: EustIssueUnit })
  unit!: string;

  @Column({ enum: EustIssueType })
  type!: string;

  @Column()
  description!: string;

  @Column({ nullable: true, name: 'caused_by' })
  causedBy!: string;

  @Column()
  resolved!: boolean;

  @CreateDateColumn()
  created_at!: Date;

  @UpdateDateColumn()
  updated_at!: Date;
}
