sqlx_rqlite/
arguments.rs

1use crate::rqlite;
2use crate::encode::{Encode, IsNull};
3//use crate::types::Type;
4//use crate::type_info::DataType;
5use crate::{Rqlite, RqliteTypeInfo};
6//use crate::error::BoxDynError;
7
8pub(crate) use sqlx_core::arguments::*;
9use sqlx_core::types::Type;
10//use sqlx_core::encode::IsNull;
11
12//use rqlite::types::ToJsonValue;
13/// Implementation of [`Arguments`] for MySQL.
14#[derive(Debug, Default, Clone)]
15pub struct RqliteArguments {
16    pub(crate) values: Vec<rqlite::Value>,
17    pub(crate) types: Vec<RqliteTypeInfo>,
18}
19/*
20impl<'q> Encode<'q, Rqlite> for i8 {
21    fn encode_by_ref(&self, args: &mut Vec<rqlite::Value>) -> IsNull {
22        args.push(rqlite::Value::from(*self));
23
24        IsNull::No
25    }
26}
27*/
28impl 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}