54 lines
1.6 KiB
Rust
54 lines
1.6 KiB
Rust
//! Service trait definitions — use-case boundaries for CMS operations.
|
|||
|
|
//!
|
||
|
|
//! These traits are implemented by the application layer and consumed by
|
||
|
|
//! infrastructure adapters (HTTP handlers, CLI commands, etc.).
|
||
|
|
|
||
|
|
#![allow(
|
||
|
|
clippy::cast_possible_truncation,
|
||
|
|
clippy::cast_sign_loss,
|
||
|
|
clippy::cast_precision_loss,
|
||
|
|
clippy::cast_possible_wrap
|
||
|
|
)]
|
||
|
|
|
||
|
|
use anyhow::Result;
|
||
|
|
|
||
|
|
use super::conversation::{ChatMessage, Conversation};
|
||
|
|
use super::memory::Memory;
|
||
|
|
use super::settings::Settings;
|
||
|
|
|
||
|
|
/// Settings use cases.
|
||
|
|
pub trait SettingsService {
|
||
|
|
/// Load current settings from the default store.
|
||
|
|
fn load_settings(&self) -> Result<Settings>;
|
||
|
|
|
||
|
|
/// Persist updated settings.
|
||
|
|
fn save_settings(&self, settings: &Settings) -> Result<()>;
|
||
|
|
|
||
|
|
/// Update the provider configuration (name and details).
|
||
|
|
fn update_provider(&self, name: &str, config: &super::app_config::ProviderConfig) -> Result<()>;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Conversation management use cases.
|
||
|
|
pub trait ConversationService {
|
||
|
|
/// Load a conversation for the given session id.
|
||
|
|
fn load_conversation(&self, session_id: &str) -> Result<Conversation>;
|
||
|
|
|
||
|
|
/// Persist a conversation.
|
||
|
|
fn save_conversation(&self, conv: &Conversation) -> Result<()>;
|
||
|
|
|
||
|
|
/// Append a single message and persist.
|
||
|
|
fn add_message(&self, conv: &mut Conversation, msg: ChatMessage) -> Result<()>;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Memory management use cases.
|
||
|
|
pub trait MemoryService {
|
||
|
|
/// List all memory slugs.
|
||
|
|
fn list_memories(&self) -> Result<Vec<String>>;
|
||
|
|
|
||
|
|
/// Save (create or update) a memory.
|
||
|
|
fn save_memory(&self, memory: &Memory) -> Result<()>;
|
||
|
|
|
||
|
|
/// Delete a memory by name.
|
||
|
|
fn delete_memory(&self, name: &str) -> Result<()>;
|
||
|
|
}
|