Skip to main content

chryso_ffi/
lib.rs

1use chryso::parser::{Dialect, ParserConfig, SimpleParser, SqlParser};
2
3#[repr(C)]
4pub struct ChrysoHandle {
5    _private: [u8; 0],
6}
7
8#[unsafe(no_mangle)]
9pub extern "C" fn chryso_parse_sql(sql: *const std::os::raw::c_char) -> *mut ChrysoHandle {
10    if sql.is_null() {
11        return std::ptr::null_mut();
12    }
13    let c_str = unsafe { std::ffi::CStr::from_ptr(sql) };
14    let Ok(sql_str) = c_str.to_str() else {
15        return std::ptr::null_mut();
16    };
17    let parser = SimpleParser::new(ParserConfig {
18        dialect: Dialect::Postgres,
19    });
20    let _ = parser.parse(sql_str).ok();
21    std::ptr::null_mut()
22}