use crate::prelude::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DBMessage {
pub id: i64,
pub session_id: String,
pub ordinal: i64,
pub role: String,
pub content: String,
pub timestamp: Option<String>,
pub has_thinking: bool,
pub has_tool_use: bool,
pub content_length: i64,
pub is_system: bool,
pub model: String,
pub token_usage: String,
pub context_tokens: i64,
pub output_tokens: i64,
pub has_context_tokens: bool,
pub has_output_tokens: bool,
pub claude_message_id: String,
pub claude_request_id: String,
pub source_type: String,
pub source_subtype: String,
pub source_uuid: String,
pub source_parent_uuid: String,
pub is_sidechain: bool,
pub is_compact_boundary: bool,
#[serde(skip_serializing)]
pub tool_calls: Vec<DBToolCall>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DBToolCall {
pub tool_name: String,
pub category: String,
pub tool_use_id: Option<String>,
pub input_json: Option<String>,
pub skill_name: Option<String>,
pub result_content_length: Option<i64>,
pub result_content: Option<String>,
pub subagent_session_id: Option<String>,
}
#[derive(Debug, Clone)]
pub struct MessageInsert {
pub session_id: String,
pub ordinal: i64,
pub role: String,
pub content: String,
pub timestamp: Option<String>,
pub has_thinking: bool,
pub has_tool_use: bool,
pub content_length: i64,
pub is_system: bool,
pub model: String,
pub token_usage: String,
pub context_tokens: i64,
pub output_tokens: i64,
pub has_context_tokens: bool,
pub has_output_tokens: bool,
pub claude_message_id: String,
pub claude_request_id: String,
pub source_type: String,
pub source_subtype: String,
pub source_uuid: String,
pub source_parent_uuid: String,
pub is_sidechain: bool,
pub is_compact_boundary: bool,
pub tool_calls: Vec<ToolCallInsert>,
}
impl Default for MessageInsert {
fn default() -> Self {
Self {
session_id: String::new(),
ordinal: 0,
role: String::new(),
content: String::new(),
timestamp: None,
has_thinking: false,
has_tool_use: false,
content_length: 0,
is_system: false,
model: String::new(),
token_usage: String::new(),
context_tokens: 0,
output_tokens: 0,
has_context_tokens: false,
has_output_tokens: false,
claude_message_id: String::new(),
claude_request_id: String::new(),
source_type: String::new(),
source_subtype: String::new(),
source_uuid: String::new(),
source_parent_uuid: String::new(),
is_sidechain: false,
is_compact_boundary: false,
tool_calls: Vec::new(),
}
}
}
#[derive(Debug, Clone)]
pub struct ToolCallInsert {
pub tool_name: String,
pub category: String,
pub tool_use_id: Option<String>,
pub input_json: Option<String>,
pub skill_name: Option<String>,
pub result_content_length: Option<i64>,
pub result_content: Option<String>,
pub subagent_session_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MinimapEntry {
pub ordinal: i64,
pub role: String,
pub content_length: i64,
pub has_thinking: bool,
pub has_tool_use: bool,
}