import {
  BaseEntity,
  Column, CreateDateColumn,
  Entity,
  OneToMany,
  PrimaryGeneratedColumn, UpdateDateColumn
} from "typeorm";

import {Message} from "./message";

@Entity()
export class Ticket extends BaseEntity {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  licenseeId: number;

  @CreateDateColumn()
  createdOn: Date;

  @UpdateDateColumn()
  updatedOn: Date;

  @Column({default: null})
  lastQueriedOn: Date;

  @OneToMany(() => Message, message => message.ticket)
  messages: Promise<Message[]>;

  @Column()
  slackThreadTs: string;

  public static findBySlackThreadTs(slackThreadTs: string): Promise<Ticket> {
    return Ticket.findOne({slackThreadTs});
  }

}
