use crate::{
duckly::{
duckdb_replacement_scan_add_parameter, duckdb_replacement_scan_info,
duckdb_replacement_scan_set_error, duckdb_replacement_scan_set_function_name,
},
Value,
};
use std::ffi::CString;
pub struct ReplacementScanInfo(pub(crate) duckdb_replacement_scan_info);
impl ReplacementScanInfo {
pub fn set_function_name(&mut self, function_name: &str) {
unsafe {
let function_name = CString::new(function_name).unwrap();
duckdb_replacement_scan_set_function_name(self.0, function_name.as_ptr());
}
}
pub fn add_parameter(&mut self, parameter: Value) {
unsafe {
duckdb_replacement_scan_add_parameter(self.0, parameter.0);
}
}
pub fn set_error(&mut self, error: &str) {
unsafe {
let error = CString::new(error).unwrap();
duckdb_replacement_scan_set_error(self.0, error.as_ptr());
}
}
}
impl From<duckdb_replacement_scan_info> for ReplacementScanInfo {
fn from(value: duckdb_replacement_scan_info) -> Self {
Self(value)
}
}