1use crate::rqlite;
2use crate::encode::{Encode, IsNull};
3use crate::{Rqlite, RqliteTypeInfo};
6pub(crate) use sqlx_core::arguments::*;
9use sqlx_core::types::Type;
10#[derive(Debug, Default, Clone)]
15pub struct RqliteArguments {
16 pub(crate) values: Vec<rqlite::Value>,
17 pub(crate) types: Vec<RqliteTypeInfo>,
18}
19impl RqliteArguments {
29 pub(crate) fn add<'q, T>(&mut self, value: T)
30 where
31 T: Encode<'q, Rqlite> + Type<Rqlite>,
32 {
33 let ty = T::type_info();
34
35 if let IsNull::Yes = value.encode_by_ref(&mut self.values) {
36 } else {
37 }
38 self.types.push(ty);
39 }
40
41 #[doc(hidden)]
42 pub fn len(&self) -> usize {
43 self.types.len()
44 }
45}
46
47impl<'q> Arguments<'q> for RqliteArguments {
48 type Database = Rqlite;
49
50 fn reserve(&mut self, len: usize, size: usize) {
51 self.types.reserve(len);
52 self.values.reserve(size);
53 }
54
55 fn add<T>(&mut self, value: T)
56 where
57 T: Encode<'q, Self::Database> + Type<Self::Database>,
58 {
59 self.add(value)
60 }
61}