package request

// ChatScheduleFileUploadRequest - Request for uploading chat schedule file
type ChatScheduleFileUploadRequest struct {
	ChatScheduleID uint   `form:"chat_schedule_id" validate:"required"`
	FileType       string `form:"file_type" validate:"required,oneof=article journal video audio document other"`
	Description    string `form:"description" validate:"max=500"`
	IsRequired     bool   `form:"is_required"`
}

// ChatScheduleFileUpdateRequest - Request for updating chat schedule file
type ChatScheduleFileUpdateRequest struct {
	FileName     string `json:"file_name" validate:"omitempty,max=255"`
	OriginalName string `json:"original_name" validate:"omitempty,max=255"`
	FilePath     string `json:"file_path" validate:"omitempty,max=500"`
	FileSize     int64  `json:"file_size" validate:"omitempty,min=0"`
	MimeType     string `json:"mime_type" validate:"omitempty,max=100"`
	FileType     string `json:"file_type" validate:"omitempty,oneof=article journal video audio document other"`
	Description  string `json:"description" validate:"omitempty,max=500"`
	IsRequired   *bool  `json:"is_required"`
}

// ChatScheduleFileQueryRequest - Request for querying chat schedule files
type ChatScheduleFileQueryRequest struct {
	ChatScheduleID *uint   `json:"chat_schedule_id"`
	FileType       *string `json:"file_type"`
	IsRequired     *bool   `json:"is_required"`
}
