use async_trait::async_trait;
use crate::document::traits::AsDocument;
use crate::document::{DocumentId, DocumentViewId};
use crate::schema::SchemaId;
use crate::storage_provider::error::DocumentStorageError;
use crate::storage_provider::traits::OperationStore;
#[async_trait]
pub trait DocumentStore: OperationStore {
type Document: AsDocument;
async fn get_document(
&self,
id: &DocumentId,
) -> Result<Option<Self::Document>, DocumentStorageError>;
async fn get_document_by_view_id(
&self,
id: &DocumentViewId,
) -> Result<Option<Self::Document>, DocumentStorageError>;
async fn get_documents_by_schema(
&self,
schema_id: &SchemaId,
) -> Result<Vec<Self::Document>, DocumentStorageError>;
}