import { Column, Entity } from 'typeorm'
import { UserModifiableEntity } from '../entity'
import { MessageType } from './enums'

@Entity()
export class Message extends UserModifiableEntity<Message> {
	/** Text content of the message */
	@Column({
		type: 'text',
		nullable: false,
	})
	body: string

	/** Type of the message */
	@Column({
		type: 'enum',
		enum: MessageType,
		default: MessageType.request_waiter,
		nullable: false,
	})
	type: MessageType

	/** True if message has been acknowledged by the waiter */
	@Column({
		type: 'boolean',
		nullable: false,
		default: false,
	})
	acknowledged: boolean

	/** Timestamp representing when message was acknowledged by the waiter */
	@Column({
		type: 'timestamp',
		nullable: true,
	})
	acknowledgedAt?: Date

	/** Id of the user who acknowledged the message */
	@Column({
		type: 'uuid',
		nullable: true,
	})
	acknowledgedBy?: string

	/** Id of the table for which message was created */
	@Column({
		type: 'uuid',
		nullable: false,
	})
	tableId: string

	/** Id of the order for which message was created */
	@Column({
		type: 'uuid',
		nullable: false,
	})
	orderId: string

	/** Id of the reservation for which message was created */
	@Column({
		type: 'uuid',
		nullable: true,
	})
	reservationId?: string
}
