use crate::agent::document::JACSDocument;
use std::error::Error;
pub trait DatabaseDocumentTraits: Send + Sync {
fn query_by_type(
&self,
jacs_type: &str,
limit: usize,
offset: usize,
) -> Result<Vec<JACSDocument>, Box<dyn Error>>;
fn query_by_field(
&self,
field_path: &str,
value: &str,
jacs_type: Option<&str>,
limit: usize,
offset: usize,
) -> Result<Vec<JACSDocument>, Box<dyn Error>>;
fn count_by_type(&self, jacs_type: &str) -> Result<usize, Box<dyn Error>>;
fn get_versions(&self, jacs_id: &str) -> Result<Vec<JACSDocument>, Box<dyn Error>>;
fn get_latest(&self, jacs_id: &str) -> Result<JACSDocument, Box<dyn Error>>;
fn query_by_agent(
&self,
agent_id: &str,
jacs_type: Option<&str>,
limit: usize,
offset: usize,
) -> Result<Vec<JACSDocument>, Box<dyn Error>>;
fn run_migrations(&self) -> Result<(), Box<dyn Error>>;
}