pub mod community;
pub mod extract;
pub mod http;
pub mod manifest;
pub mod parser;
pub mod schema;
pub mod sde_index;
#[derive(Debug)]
pub enum BuilderError {
Io(std::io::Error),
Json(serde_json::Error),
Http(reqwest::Error),
HttpStatus {
url: String,
status: u16,
},
Sqlite(rusqlite::Error),
Zip(zip::result::ZipError),
Data(String),
}
impl std::fmt::Display for BuilderError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
BuilderError::Io(err) => write!(f, "I/O error: {err}"),
BuilderError::Json(err) => write!(f, "JSON error: {err}"),
BuilderError::Http(err) => write!(f, "HTTP error: {err}"),
BuilderError::HttpStatus { url, status } => {
write!(f, "{url} responded with status {status}")
}
BuilderError::Sqlite(err) => write!(f, "SQLite error: {err}"),
BuilderError::Zip(err) => write!(f, "Zip error: {err}"),
BuilderError::Data(message) => write!(f, "malformed SDE record: {message}"),
}
}
}
impl std::error::Error for BuilderError {}
impl From<std::io::Error> for BuilderError {
fn from(err: std::io::Error) -> Self {
BuilderError::Io(err)
}
}
impl From<rusqlite::Error> for BuilderError {
fn from(err: rusqlite::Error) -> Self {
BuilderError::Sqlite(err)
}
}
impl From<zip::result::ZipError> for BuilderError {
fn from(err: zip::result::ZipError) -> Self {
BuilderError::Zip(err)
}
}
impl From<serde_json::Error> for BuilderError {
fn from(err: serde_json::Error) -> Self {
BuilderError::Json(err)
}
}
impl From<reqwest::Error> for BuilderError {
fn from(err: reqwest::Error) -> Self {
BuilderError::Http(err)
}
}