sqlx-turso-driver 0.0.1

An asynchronous SQLx driver for embedded Turso databases
use crate::{Turso, TursoTypeInfo};
use sqlx_core::value::{Value, ValueRef};
use std::borrow::Cow;

#[derive(Debug, Clone)]
pub struct TursoValue(pub(crate) turso::Value);
#[derive(Debug, Clone, Copy)]
pub struct TursoValueRef<'r>(pub(crate) &'r TursoValue);
impl TursoValue {
    pub(crate) fn info(&self) -> TursoTypeInfo {
        match self.0 {
            turso::Value::Null => TursoTypeInfo::Null,
            turso::Value::Integer(_) => TursoTypeInfo::Integer,
            turso::Value::Real(_) => TursoTypeInfo::Real,
            turso::Value::Text(_) => TursoTypeInfo::Text,
            turso::Value::Blob(_) => TursoTypeInfo::Blob,
        }
    }
}
impl Value for TursoValue {
    type Database = Turso;
    fn as_ref(&self) -> TursoValueRef<'_> {
        TursoValueRef(self)
    }
    fn type_info(&self) -> Cow<'_, TursoTypeInfo> {
        Cow::Owned(self.info())
    }
    fn is_null(&self) -> bool {
        self.0.is_null()
    }
}
impl<'r> ValueRef<'r> for TursoValueRef<'r> {
    type Database = Turso;
    fn to_owned(&self) -> TursoValue {
        self.0.clone()
    }
    fn type_info(&self) -> Cow<'_, TursoTypeInfo> {
        self.0.type_info()
    }
    fn is_null(&self) -> bool {
        self.0.is_null()
    }
}