use async_trait::async_trait;
use crate::document::DocumentId;
use crate::entry::LogId;
use crate::identity::Author;
use crate::storage_provider::error::LogStorageError;
use crate::storage_provider::traits::AsStorageLog;
#[async_trait]
pub trait LogStore<StorageLog: AsStorageLog> {
async fn insert_log(&self, value: StorageLog) -> Result<bool, LogStorageError>;
async fn get(
&self,
author: &Author,
document_id: &DocumentId,
) -> Result<Option<LogId>, LogStorageError>;
async fn next_log_id(&self, author: &Author) -> Result<LogId, LogStorageError>;
async fn latest_log_id(&self, author: &Author) -> Result<Option<LogId>, LogStorageError>;
}