import {
  Entity, PrimaryGeneratedColumn, Column,
  ManyToOne, JoinColumn, CreateDateColumn,
} from 'typeorm';
import { ChatRoom } from './chat-room.entity';
import { User } from '../../user/entities/user.entity';

export type MessageType = 'text' | 'file' | 'image';

@Entity('chat_messages')
export class ChatMessage {
  @PrimaryGeneratedColumn()
  id!: number;

  @Column()
  room_id!: number;

  @Column()
  sender_id!: number;

  @Column('text')
  message!: string;

  @Column({ type: 'enum', enum: ['text', 'file', 'image'], default: 'text' })
  type!: MessageType;

  @Column({ nullable: true })
  file_url!: string;

  @Column({ nullable: true })
  file_name!: string;

  @Column({ nullable: true })
  reply_to_id!: number;

  @CreateDateColumn()
  created_at!: Date;

  @ManyToOne(() => ChatRoom, r => r.messages)
  @JoinColumn({ name: 'room_id' })
  room!: ChatRoom;

  @ManyToOne(() => User)
  @JoinColumn({ name: 'sender_id' })
  sender!: User;
}