feat: integrate thiserror

This commit is contained in:
Jindřich Moravec 2024-01-27 16:34:44 +01:00
parent 677fd19bec
commit 5ced11c40d
2 changed files with 15 additions and 4 deletions

View file

@ -1,12 +1,15 @@
use minisql::{operation::Operation, schema::TableSchema};
use nom::{branch::alt, multi::many0, IResult};
use thiserror::Error;
use crate::{parsing::{create::parse_create, delete::parse_delete, index::parse_create_index, insert::parse_insert, select::parse_select}, validation::{validate_operation, ValidationError}};
#[derive(Debug)]
#[derive(Debug, Error)]
pub enum Error {
#[error("parsing error: {0}")]
ParsingError(String),
ValidationError(ValidationError)
#[error("validation error: {0}")]
ValidationError(#[from] ValidationError)
}
pub fn parse_statement<'a>(input: &'a str) -> IResult<&str, Operation> {
@ -31,7 +34,7 @@ pub fn parse_and_validate(query: String, db_metadata: &Vec<(String, &TableSchema
Error::ParsingError(err.to_string())
})?;
validate_operation(&op, db_metadata).map_err(|err| Error::ValidationError(err))?;
validate_operation(&op, db_metadata)?;
Ok(op)
}