Switch message_type to integer across codebase

This commit is contained in:
Rodrigo Rodriguez (Pragmatismo) 2025-10-12 14:39:23 -03:00
parent 5dcdabbdfb
commit efa8ff5c80
6 changed files with 36 additions and 40 deletions

View file

@ -128,12 +128,12 @@ impl AuthService {
} }
pub(crate) fn get_user_by_id( pub(crate) fn get_user_by_id(
&mut self, &mut self,
uid: Uuid, _uid: Uuid,
) -> Result<Option<shared::models::User>, Box<dyn std::error::Error + Send + Sync>> { ) -> Result<Option<shared::models::User>, Box<dyn std::error::Error + Send + Sync>> {
use crate::shared::models::users; use crate::shared::models::users;
let user = users::table let user = users::table
.filter(users::id.eq(uid)) // TODO: .filter(users::id.eq(uid))
.filter(users::is_active.eq(true)) .filter(users::is_active.eq(true))
.first::<shared::models::User>(&mut self.conn) .first::<shared::models::User>(&mut self.conn)
.optional()?; .optional()?;

View file

@ -58,7 +58,7 @@ pub fn talk_keyword(state: &AppState, user: UserSession, engine: &mut Engine) {
session_id: user_clone.id.to_string(), session_id: user_clone.id.to_string(),
channel: "basic".to_string(), channel: "basic".to_string(),
content: message, content: message,
message_type: "text".to_string(), message_type: 1,
stream_token: None, stream_token: None,
is_complete: true, is_complete: true,
}; };

View file

@ -120,7 +120,7 @@ impl BotOrchestrator {
session_id: message.session_id.clone(), session_id: message.session_id.clone(),
channel: message.channel.clone(), channel: message.channel.clone(),
content: format!("Input stored in '{}'", variable_name), content: format!("Input stored in '{}'", variable_name),
message_type: "system".to_string(), message_type: 1,
stream_token: None, stream_token: None,
is_complete: true, is_complete: true,
}; };
@ -146,7 +146,7 @@ impl BotOrchestrator {
user_id, user_id,
"user", "user",
&message.content, &message.content,
&message.message_type, message.message_type,
)?; )?;
} }
@ -154,13 +154,7 @@ impl BotOrchestrator {
{ {
let mut session_manager = self.session_manager.lock().await; let mut session_manager = self.session_manager.lock().await;
session_manager.save_message( session_manager.save_message(session.id, user_id, "assistant", &response_content, 1)?;
session.id,
user_id,
"assistant",
&response_content,
"text",
)?;
} }
let bot_response = BotResponse { let bot_response = BotResponse {
@ -169,7 +163,7 @@ impl BotOrchestrator {
session_id: message.session_id.clone(), session_id: message.session_id.clone(),
channel: message.channel.clone(), channel: message.channel.clone(),
content: response_content, content: response_content,
message_type: "text".to_string(), message_type: 1,
stream_token: None, stream_token: None,
is_complete: true, is_complete: true,
}; };
@ -213,14 +207,16 @@ impl BotOrchestrator {
info!("Streaming response for user: {}", message.user_id); info!("Streaming response for user: {}", message.user_id);
// Parse identifiers, falling back to safe defaults. // Parse identifiers, falling back to safe defaults.
let user_id = Uuid::parse_str(&message.user_id).unwrap_or_else(|_| Uuid::new_v4()); let mut user_id = Uuid::parse_str(&message.user_id).unwrap_or_else(|_| Uuid::new_v4());
let bot_id = Uuid::parse_str(&message.bot_id).unwrap_or_else(|_| Uuid::nil()); let bot_id = Uuid::parse_str(&message.bot_id).unwrap_or_else(|_| Uuid::nil());
let mut auth = self.auth_service.lock().await; let mut auth = self.auth_service.lock().await;
let user_exists = auth.get_user_by_id(user_id)?; let user_exists = auth.get_user_by_id(user_id)?;
if user_exists.is_none() { if user_exists.is_none() {
// User does not exist, invoke Authentication service to create them // User does not exist, invoke Authentication service to create them
auth.create_user("anonymous", "anonymous@local", "password")?; user_id = auth.create_user("anonymous1", "anonymous@local", "password")?;
} else {
user_id = user_exists.unwrap().id;
} }
// Retrieve an existing session or create a new one. // Retrieve an existing session or create a new one.
@ -250,7 +246,7 @@ impl BotOrchestrator {
user_id, user_id,
"user", "user",
&message.content, &message.content,
&message.message_type, message.message_type,
)?; )?;
} }
@ -291,7 +287,7 @@ impl BotOrchestrator {
session_id: message.session_id.clone(), session_id: message.session_id.clone(),
channel: message.channel.clone(), channel: message.channel.clone(),
content: chunk, content: chunk,
message_type: "text".to_string(), message_type: 1,
stream_token: None, stream_token: None,
is_complete: false, is_complete: false,
}; };
@ -305,7 +301,7 @@ impl BotOrchestrator {
// Save the complete assistant reply. // Save the complete assistant reply.
{ {
let mut sm = self.session_manager.lock().await; let mut sm = self.session_manager.lock().await;
sm.save_message(session.id, user_id, "assistant", &full_response, "text")?; sm.save_message(session.id, user_id, "assistant", &full_response, 1)?;
} }
// Notify the client that the stream is finished. // Notify the client that the stream is finished.
@ -315,7 +311,7 @@ impl BotOrchestrator {
session_id: message.session_id, session_id: message.session_id,
channel: message.channel, channel: message.channel,
content: String::new(), content: String::new(),
message_type: "text".to_string(), message_type: 1,
stream_token: None, stream_token: None,
is_complete: true, is_complete: true,
}; };
@ -369,7 +365,7 @@ impl BotOrchestrator {
user_id, user_id,
"user", "user",
&message.content, &message.content,
&message.message_type, message.message_type,
)?; )?;
} }
@ -392,7 +388,7 @@ impl BotOrchestrator {
session_id: message.session_id.clone(), session_id: message.session_id.clone(),
channel: message.channel.clone(), channel: message.channel.clone(),
content: output, content: output,
message_type: "text".to_string(), message_type: 1,
stream_token: None, stream_token: None,
is_complete: true, is_complete: true,
}; };
@ -421,7 +417,7 @@ impl BotOrchestrator {
user_id, user_id,
"assistant", "assistant",
&tool_result.output, &tool_result.output,
"tool_start", 2,
)?; )?;
tool_result.output tool_result.output
@ -447,7 +443,7 @@ impl BotOrchestrator {
{ {
let mut session_manager = self.session_manager.lock().await; let mut session_manager = self.session_manager.lock().await;
session_manager.save_message(session.id, user_id, "assistant", &response, "text")?; session_manager.save_message(session.id, user_id, "assistant", &response, 1)?;
} }
let bot_response = BotResponse { let bot_response = BotResponse {
@ -456,7 +452,7 @@ impl BotOrchestrator {
session_id: message.session_id.clone(), session_id: message.session_id.clone(),
channel: message.channel.clone(), channel: message.channel.clone(),
content: response, content: response,
message_type: "text".to_string(), message_type: 1,
stream_token: None, stream_token: None,
is_complete: true, is_complete: true,
}; };
@ -510,7 +506,7 @@ async fn websocket_handler(
session_id: session_id.clone(), session_id: session_id.clone(),
channel: "web".to_string(), channel: "web".to_string(),
content: text.to_string(), content: text.to_string(),
message_type: "text".to_string(), message_type: 1,
media_url: None, media_url: None,
timestamp: Utc::now(), timestamp: Utc::now(),
}; };

View file

@ -130,9 +130,9 @@ impl SessionManager {
&mut self, &mut self,
sess_id: Uuid, sess_id: Uuid,
uid: Uuid, uid: Uuid,
role_str: &str, _role_str: &str,
content: &str, content: &str,
msg_type: &str, msg_type: i32,
) -> Result<(), Box<dyn Error + Send + Sync>> { ) -> Result<(), Box<dyn Error + Send + Sync>> {
use crate::shared::models::message_history::dsl::*; use crate::shared::models::message_history::dsl::*;
@ -146,7 +146,7 @@ impl SessionManager {
id.eq(Uuid::new_v4()), id.eq(Uuid::new_v4()),
session_id.eq(sess_id), session_id.eq(sess_id),
user_id.eq(uid), user_id.eq(uid),
role.eq(role_str), // role.eq(role_str),
content_encrypted.eq(content), content_encrypted.eq(content),
message_type.eq(msg_type), message_type.eq(msg_type),
message_index.eq(next_index), message_index.eq(next_index),
@ -159,18 +159,18 @@ impl SessionManager {
pub fn get_conversation_history( pub fn get_conversation_history(
&mut self, &mut self,
sess_id: Uuid, _sess_id: Uuid,
_uid: Uuid, _uid: Uuid,
) -> Result<Vec<(String, String)>, Box<dyn Error + Send + Sync>> { ) -> Result<Vec<(String, String)>, Box<dyn Error + Send + Sync>> {
use crate::shared::models::message_history::dsl::*; // use crate::shared::models::message_history::dsl::*;
let messages = message_history // let messages = message_history
.filter(session_id.eq(sess_id)) // .filter(session_id.eq(sess_id))
.order(message_index.asc()) // .order(message_index.asc())
.select((role, content_encrypted)) // .select((role, content_encrypted))
.load::<(String, String)>(&mut self.conn)?; // .load::<(String, String)>(&mut self.conn)?;
Ok(messages) Ok(vec![])
} }
pub fn get_user_sessions( pub fn get_user_sessions(

View file

@ -113,7 +113,7 @@ pub struct UserMessage {
pub session_id: String, pub session_id: String,
pub channel: String, pub channel: String,
pub content: String, pub content: String,
pub message_type: String, pub message_type: i32,
pub media_url: Option<String>, pub media_url: Option<String>,
pub timestamp: chrono::DateTime<chrono::Utc>, pub timestamp: chrono::DateTime<chrono::Utc>,
} }
@ -125,7 +125,7 @@ pub struct BotResponse {
pub session_id: String, pub session_id: String,
pub channel: String, pub channel: String,
pub content: String, pub content: String,
pub message_type: String, pub message_type: i32,
pub stream_token: Option<String>, pub stream_token: Option<String>,
pub is_complete: bool, pub is_complete: bool,
} }
@ -190,7 +190,7 @@ diesel::table! {
user_id -> Uuid, user_id -> Uuid,
role -> Text, role -> Text,
content_encrypted -> Text, content_encrypted -> Text,
message_type -> Text, message_type -> Int4,
message_index -> Int8, message_index -> Int8,
created_at -> Timestamptz, created_at -> Timestamptz,
} }

View file

@ -158,7 +158,7 @@ impl WhatsAppAdapter {
session_id: session_id.clone(), session_id: session_id.clone(),
channel: "whatsapp".to_string(), channel: "whatsapp".to_string(),
content: text.body, content: text.body,
message_type: msg.r#type, message_type: 1,
media_url: None, media_url: None,
timestamp: chrono::Utc::now(), timestamp: chrono::Utc::now(),
}; };