import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
import { Ticket } from './ticket.entity';
import { UserRole } from 'common/enum/UserRole.enum';

@Entity('comments')
export class Comment {
  @PrimaryGeneratedColumn()
  id: number;

  @Column('text')
  content: string;

  // @ManyToOne(() => UserEntity, user => user.comments)
  // @JoinColumn({ name: 'author_id' })
  // author: UserEntity;

  @Column({ name: 'author_id', nullable: true })
  authorId: number;

  @Column({ type: 'enum', enum: UserRole, nullable: false })
  role: UserRole;

  @ManyToOne(() => Ticket, ticket => ticket.comments, { onDelete: 'CASCADE' })
  @JoinColumn({ name: 'ticket_id' })
  ticket: Ticket;

  @Column({ name: 'attachment_url', nullable: true })
  attachmentUrl: string;

  @Column({ name: 'ticket_id' })
  ticketId: number;

  @Column({ name: 'is_seen', default: false })
  isSeen: boolean;

  @Column({ name: 'seen_at', type: 'timestamp', nullable: true })
  seenAt: Date;

  @Column({ name: 'edited', default: false })
  edited: boolean;

  @Column({ name: 'edited_at', type: 'timestamp', nullable: true })
  editedAt: Date;

  @Column({ name: 'deleted', default: false })
  deleted: boolean;

  @Column({ name: 'deleted_at', type: 'timestamp', nullable: true })
  deletedAt: Date;

  @Column({ name: 'reply_to_id', nullable: true })
  replyToId: number;

  @CreateDateColumn({ name: 'created_at' })
  createdAt: Date;

  @UpdateDateColumn({ name: 'updated_at' })
  updatedAt: Date;
}
