use crate::{backend::FfiBackend, string::StringPtr, value::FfiValue, vec::VecPtr};
use sea_orm::{Statement, Values};
#[repr(C)]
pub(crate) struct FfiStatement {
sql: StringPtr,
values_none: bool,
values: VecPtr<FfiValue>,
backend: FfiBackend
}
impl From<Statement> for FfiStatement {
fn from(stmt: Statement) -> Self {
Self {
sql: stmt.sql.into(),
values_none: stmt.values.is_none(),
values: stmt
.values
.map(|values| values.0)
.unwrap_or_default()
.into_iter()
.map(Into::into)
.collect::<Vec<FfiValue>>()
.into(),
backend: stmt.db_backend.into()
}
}
}
impl From<FfiStatement> for Statement {
fn from(stmt: FfiStatement) -> Self {
Self {
sql: stmt.sql.into(),
values: if stmt.values_none {
None
} else {
Some(Values(
stmt.values.into_vec().into_iter().map(Into::into).collect()
))
},
db_backend: stmt.backend.into()
}
}
}