Trait skytable::query::SQParam

source ·
pub trait SQParam {
    // Required method
    fn append_param(&self, q: &mut Vec<u8>) -> usize;
}
Expand description

An SQParam should be implemented by any type that is expected to be used as a parameter

§Example implementation

Say you have a custom type which has to store <username>-<id> in your database and your database schema looks like create model myspace.mymodel(username: string, id: uint64, password: string). You can do that directly:

use skytable::{query, query::SQParam};

struct MyType {
    username: String,
    id: u64,
    password: String,
}

impl MyType {
    fn new(username: String, id: u64, password: String) -> Self {
        Self { username, id, password }
    }
}

impl SQParam for MyType {
    fn append_param(&self, buf: &mut Vec<u8>) -> usize {
        self.username.append_param(buf) +
        self.id.append_param(buf) +
        self.password.append_param(buf)
    }
}

// You can now directly do this!
let query = query!("insert into myspace.mymodel(?, ?, ?)", MyType::new("sayan".to_owned(), 0, "pass123".to_owned()));
assert_eq!(query.param_cnt(), 3);
// You can also used it beside normal params
// assume schema is `create model mymomdel2(uname: string, id: uint64, pass: string, age: uint8)`
let query = query!("insert into myspace.mymodel(?, ?, ?, ?)", MyType::new("sayan".to_owned(), 0, "pass123".to_owned()), 101);
assert_eq!(query.param_cnt(), 4);

Required Methods§

source

fn append_param(&self, q: &mut Vec<u8>) -> usize

Append this element to the raw parameter buffer

Return the number of parameters appended (see example above)

Implementations on Foreign Types§

source§

impl SQParam for bool

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl SQParam for f32

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl SQParam for f64

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl SQParam for i8

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for i16

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for i32

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for i64

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for isize

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for u8

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for u16

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for u32

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for u64

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for usize

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for String

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl SQParam for Vec<u8>

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroI8

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroI16

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroI32

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroI64

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroIsize

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroU8

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroU16

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroU32

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroU64

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl SQParam for NonZeroUsize

source§

fn append_param(&self, b: &mut Vec<u8>) -> usize

source§

impl<'a> SQParam for &'a str

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl<'a> SQParam for &'a String

source§

fn append_param(&self, q: &mut Vec<u8>) -> usize

source§

impl<'a> SQParam for &'a [u8]

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl<'a, const N: usize> SQParam for &'a [u8; N]

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl<T> SQParam for Option<T>
where T: SQParam,

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

source§

impl<const N: usize> SQParam for [u8; N]

source§

fn append_param(&self, buf: &mut Vec<u8>) -> usize

Implementors§