use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct FlowConversationMessage {
#[serde(rename = "id")]
pub id: uuid::Uuid,
#[serde(rename = "conversation_id")]
pub conversation_id: uuid::Uuid,
#[serde(rename = "message_type")]
pub message_type: MessageType,
#[serde(rename = "content")]
pub content: String,
#[serde(rename = "job_id", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub job_id: Option<Option<uuid::Uuid>>,
#[serde(rename = "created_at")]
pub created_at: String,
#[serde(rename = "step_name", skip_serializing_if = "Option::is_none")]
pub step_name: Option<String>,
#[serde(rename = "success", skip_serializing_if = "Option::is_none")]
pub success: Option<bool>,
}
impl FlowConversationMessage {
pub fn new(id: uuid::Uuid, conversation_id: uuid::Uuid, message_type: MessageType, content: String, created_at: String) -> FlowConversationMessage {
FlowConversationMessage {
id,
conversation_id,
message_type,
content,
job_id: None,
created_at,
step_name: None,
success: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum MessageType {
#[serde(rename = "user")]
User,
#[serde(rename = "assistant")]
Assistant,
#[serde(rename = "system")]
System,
#[serde(rename = "tool")]
Tool,
}
impl Default for MessageType {
fn default() -> MessageType {
Self::User
}
}