use std::error::Error;
use hydracache_db::DbCacheError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum SqlxCacheError {
#[error(transparent)]
Cache(#[from] DbCacheError),
}
pub type Result<T> = std::result::Result<T, SqlxCacheError>;
#[derive(Debug, Error)]
pub enum SqlxTransactionError<E>
where
E: Error + Send + Sync + 'static,
{
#[error("SQLx transaction body failed: {0}")]
Body(E),
#[error("SQLx transaction operation failed: {0}")]
Sqlx(#[from] sqlx::Error),
#[error("SQLx transaction outbox enqueue failed: {0}")]
Outbox(#[source] DbCacheError),
#[error("SQLx transaction local invalidation failed: {0}")]
LocalInvalidation(#[source] hydracache::CacheError),
#[error("SQLx transaction durable mode requires SqlxInvalidationOutbox")]
MissingOutbox,
}
pub type TransactionResult<T, E> = std::result::Result<T, SqlxTransactionError<E>>;