import {
  BaseEntity,
  Column,
  CreateDateColumn,
  Entity,
  EntityManager,
  ManyToOne,
  OneToMany,
  PrimaryGeneratedColumn,
  UpdateDateColumn,
} from 'typeorm';
import { Attachment } from '../attachment/attachment.entity';
import { SlackUser } from '../slack-user/slack-user.entity';
import { Ticket } from '../ticket/ticket.entity';

@Entity()
export class Message extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => Ticket, (ticket) => ticket.messages)
  ticket: Promise<Ticket>;

  @Column()
  body: string;

  @ManyToOne(() => SlackUser, (slackUser) => slackUser.id)
  slackSentBy: Promise<SlackUser>;

  @CreateDateColumn()
  createdOn: Date;

  @UpdateDateColumn()
  updatedOn: Date;

  @OneToMany(() => Attachment, (attachment) => attachment.message)
  attachments: Promise<Attachment[]>;

  @Column({ default: null })
  slackTs: string;

  @Column({ type: 'timestamp', default: null })
  editedOn: Date;
}
