use sqlx_core::database::Database;
use sqlx_core::encode::{Encode, IsNull};
use sqlx_core::error::BoxDynError;
use sqlx_core::types::Type;
use crate::Value;
pub fn add_argument<'t, DB, T>(values: &mut Vec<Value>, value: T) -> Result<(), BoxDynError>
where
DB: Database<ArgumentBuffer = Vec<Value>>,
T: Encode<'t, DB> + Type<DB>,
{
let len = values.len();
match value.encode(values) {
Ok(IsNull::Yes) => {
values.truncate(len);
values.push(Value::Null);
}
Ok(IsNull::No) => {}
Err(error) => {
values.truncate(len);
return Err(error);
}
}
Ok(())
}