package entity

import (
	"narasi-ahli-be/app/database/entity/users"
	"time"
)

type ChatMessages struct {
	ID            uint       `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
	ChatSessionID uint       `json:"chat_session_id" gorm:"type:int4;not null;index"`
	SenderID      uint       `json:"sender_id" gorm:"type:int4;not null;index"`
	Message       string     `json:"message" gorm:"type:text;not null"`
	MessageType   string     `json:"message_type" gorm:"type:varchar(20);not null;default:'text';check:message_type IN ('text', 'image', 'file', 'user', 'assistant')"` // 'text', 'image', 'file', 'user', 'assistant'
	IsEdited      bool       `json:"is_edited" gorm:"default:false"`
	EditedAt      *time.Time `json:"edited_at"`
	IsDeleted     bool       `json:"is_deleted" gorm:"default:false"`
	DeletedAt     *time.Time `json:"deleted_at"`
	CreatedAt     time.Time  `json:"created_at" gorm:"default:now()"`
	UpdatedAt     time.Time  `json:"updated_at" gorm:"default:now()"`

	// Relationships
	ChatSession *ChatSessions `json:"chat_session" gorm:"foreignKey:ChatSessionID;references:ID"`
	Sender      *users.Users  `json:"sender" gorm:"foreignKey:SenderID;references:ID"`
}
