use std::error::Error as StdError;
use thiserror::Error;
use crate::migrator;
#[derive(Error, Debug)]
pub enum Error {
#[error(transparent)]
Migration(#[from] migrator::Error),
#[error(transparent)]
Database(#[from] sqlx::Error),
#[error(transparent)]
Deserialization(#[from] disintegrate_serde::Error),
#[error(transparent)]
AppendPermit(#[from] tokio::sync::AcquireError),
#[error("unable to map the event store event to the query event: {0}")]
QueryEventMapping(#[source] Box<dyn StdError + 'static + Send + Sync>),
#[error("concurrent modification error")]
Concurrency,
}