import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  ManyToOne,
  JoinColumn,
} from "typeorm"
import { ChatRoom } from "./chat-room.entity"

export enum SenderType {
  TEAM_MEMBER = "team_member",
  CUSTOMER = "customer",
}

export enum ReceiverType {
  TEAM_MEMBER = "team_member",
  CUSTOMER = "customer",
}

// Type for participant types that can be used for both sender and receiver
export type ParticipantRoleType = "team_member" | "customer"

@Entity("chat_messages")
export class ChatMessage {
  @PrimaryGeneratedColumn()
  id: number

  @Column()
  chat_room_id: number

  @Column()
  sender_type: SenderType

  @Column()
  sender_id: number

  @Column()
  receiver_type: ReceiverType

  @Column()
  receiver_id: number

  @Column("text")
  message_text: string

  @Column({ default: false })
  is_read: boolean

  @CreateDateColumn()
  created_at: Date

  @ManyToOne(() => ChatRoom)
  @JoinColumn({ name: "chat_room_id" })
  chat_room: ChatRoom
}
