File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- use pyo3:: prelude:: * ;
1+ use pyo3:: { exceptions :: PyValueError , prelude:: * } ;
22
33extern crate sqlshield as sqlshield_rs;
44
@@ -38,7 +38,7 @@ fn validate_files(dir: String, schema_file_path: String) -> PyResult<Vec<PySqlVa
3838
3939#[ pyfunction]
4040fn validate_query ( query : String , schema : String ) -> PyResult < Vec < String > > {
41- Ok ( sqlshield_rs:: validate_query ( query, schema) )
41+ sqlshield_rs:: validate_query ( query, schema) . map_err ( |err| PyValueError :: new_err ( err ) )
4242}
4343
4444/// A Python module implemented in Rust.
Original file line number Diff line number Diff line change @@ -9,14 +9,20 @@ use regex::Regex;
99use validation:: { validate_queries_in_code, validate_statements_with_schema, SqlValidationError } ;
1010use walkdir:: WalkDir ;
1111
12- pub fn validate_query ( query : String , schema : String ) -> Vec < String > {
12+ pub fn validate_query ( query : String , schema : String ) -> Result < Vec < String > , String > {
1313 let dialect = sqlparser:: dialect:: GenericDialect { } ;
1414
15- let statements = sqlparser:: parser:: Parser :: parse_sql ( & dialect, & query) . unwrap ( ) ;
15+ let statements = match sqlparser:: parser:: Parser :: parse_sql ( & dialect, & query) {
16+ Ok ( statements) => statements,
17+ Err ( err) => return Err ( err. to_string ( ) ) ,
18+ } ;
1619
17- let loaded_schema = schema:: load_schema ( & schema. into_bytes ( ) , "sql" ) . unwrap ( ) ;
20+ let loaded_schema = match schema:: load_schema ( & schema. into_bytes ( ) , "sql" ) {
21+ Ok ( loaded_schema) => loaded_schema,
22+ Err ( err) => return Err ( err) ,
23+ } ;
1824
19- validate_statements_with_schema ( & statements, & loaded_schema)
25+ Ok ( validate_statements_with_schema ( & statements, & loaded_schema) )
2026}
2127
2228pub fn validate_files ( dir : & PathBuf , schema_file_path : & PathBuf ) -> Vec < SqlValidationError > {
Original file line number Diff line number Diff line change @@ -5,8 +5,10 @@ pub fn load_schema(schema: &[u8]) -> Result<super::TablesAndColumns, String> {
55 let schema_str = String :: from_utf8_lossy ( schema) ;
66
77 let dialect = GenericDialect { } ;
8- let statements =
9- Parser :: parse_sql ( & dialect, schema_str. as_ref ( ) ) . expect ( "Could not parse schema file" ) ;
8+ let statements = match Parser :: parse_sql ( & dialect, schema_str. as_ref ( ) ) {
9+ Ok ( statements) => statements,
10+ Err ( err) => return Err ( format ! ( "Could not parse schema file: {err}" ) ) ,
11+ } ;
1012
1113 let mut tables: HashMap < String , HashSet < String > > = HashMap :: new ( ) ;
1214 for statement in statements {
You can’t perform that action at this time.
0 commit comments