use crate::encode::{Encode, IsNull};
use crate::{RXQLite, RXQLiteTypeInfo};
pub(crate) use sqlx_core::arguments::*;
use sqlx_core::types::Type;
#[derive(Debug, Default, Clone)]
pub struct RXQLiteArguments {
pub(crate) values: Vec<rxqlite::Value>,
pub(crate) types: Vec<RXQLiteTypeInfo>,
}
impl RXQLiteArguments {
pub(crate) fn add<'q, T>(&mut self, value: T)
where
T: Encode<'q, RXQLite> + Type<RXQLite>,
{
let ty = T::type_info();
if let IsNull::Yes = value.encode_by_ref(&mut self.values) {
} else {
}
self.types.push(ty);
}
#[doc(hidden)]
pub fn len(&self) -> usize {
self.types.len()
}
}
impl<'q> Arguments<'q> for RXQLiteArguments {
type Database = RXQLite;
fn reserve(&mut self, len: usize, size: usize) {
self.types.reserve(len);
self.values.reserve(size);
}
fn add<T>(&mut self, value: T)
where
T: Encode<'q, Self::Database> + Type<Self::Database>,
{
self.add(value)
}
}