(
mut env: JNIEnv,
_class: JClass,
query: JString,
target: JString,
format: jboolean,
signature: jboolean,
)
| 8 | #[no_mangle] |
| 9 | #[allow(non_snake_case)] |
| 10 | pub extern "system" fn Java_org_prql_prql4j_PrqlCompiler_toSql( |
| 11 | mut env: JNIEnv, |
| 12 | _class: JClass, |
| 13 | query: JString, |
| 14 | target: JString, |
| 15 | format: jboolean, |
| 16 | signature: jboolean, |
| 17 | ) -> jstring { |
| 18 | let prql_query = match jstring_to_string(&mut env, &query, "query") { |
| 19 | Some(s) => s, |
| 20 | None => return std::ptr::null_mut(), |
| 21 | }; |
| 22 | let target_str = match jstring_to_string(&mut env, &target, "target") { |
| 23 | Some(s) => s, |
| 24 | None => return std::ptr::null_mut(), |
| 25 | }; |
| 26 | let prql_dialect = match Target::from_str(&target_str) { |
| 27 | Ok(t) => t, |
| 28 | Err(e) => { |
| 29 | throw_illegal_argument(&mut env, &format!("invalid target dialect: {e}")); |
| 30 | return std::ptr::null_mut(); |
| 31 | } |
| 32 | }; |
| 33 | let opt = Options { |
| 34 | format: format != 0, |
| 35 | target: prql_dialect, |
| 36 | signature_comment: signature != 0, |
| 37 | // TODO: add support for `display` |
| 38 | ..Default::default() |
| 39 | }; |
| 40 | let result = prqlc::compile(&prql_query, &opt); |
| 41 | java_string_with_exception(result, &mut env) |
| 42 | } |
| 43 | |
| 44 | #[no_mangle] |
| 45 | #[allow(non_snake_case)] |
nothing calls this directly
no test coverage detected