use async_sqlite;
use rusqlite;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum SqliteError {
#[error("Invalid page size: {0} must be power of 2 and between 512 and 65536")]
InvalidPageSize(String),
#[error("rusqlite err: {0}")]
RusqliteError(#[from] rusqlite::Error),
#[allow(clippy::enum_variant_names)]
#[error("sqlite err: {0}")]
AsyncSqliteError(async_sqlite::Error),
#[error("File does not exist: {0}")]
FileDoesNotExist(String),
#[error("io error: {0}")]
IoError(#[from] std::io::Error),
#[error("Invalid sqlite-magic: {0}")]
InvalidSqliteMagic(String),
#[error("Invalid header field: {0}")]
ParseHeaderField(String),
#[error("Invalid header field: {0}")]
InvalidHeaderField(String),
#[error("Invalid sqlite db: {0}")]
InvalidSqliteDb(String),
}
pub type SqliteResult<T> = Result<T, SqliteError>;
impl From<async_sqlite::Error> for SqliteError {
fn from(value: async_sqlite::Error) -> Self {
match value {
async_sqlite::Error::Rusqlite(value) => Self::RusqliteError(value),
_ => Self::AsyncSqliteError(value),
}
}
}