use crate::client::river_data_client::RiverDataClient;
use crate::models::SyncResult;
#[async_trait::async_trait]
pub trait SyncService: Send + Sync + 'static {
async fn sync(
&self,
full: bool,
) -> Result<SyncResult, Box<dyn std::error::Error + Send + Sync>>;
async fn handle_command(
&self,
command: &str,
_payload: Option<serde_json::Value>,
) -> Result<serde_json::Value, Box<dyn std::error::Error + Send + Sync>> {
Err(format!("Unknown command: {command}").into())
}
fn river_data_client(&self) -> Option<&RiverDataClient> {
None
}
fn update_token(&self, token: &str) {
if let Some(api) = self.river_data_client() {
api.set_token(token);
}
}
}