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