d1-orm-engine 0.1.1

Table, model, batch, raw SQL engine for rust-d1-orm
Documentation
use d1_orm_query::Value;
use serde::Deserialize;
use worker::D1Database;
use crate::{convert::to_js_vec, error::OrmError};

pub async fn raw_query<M>(db: &D1Database, sql: &str, params: &[Value]) -> Result<Vec<M>, OrmError>
where
    M: for<'de> Deserialize<'de>,
{
    let js = to_js_vec(params);
    let result = db.prepare(sql)
        .bind(&js).map_err(|_| OrmError::Bind)?
        .all().await.map_err(|_| OrmError::Execute)?;
    result.results::<M>().map_err(|_| OrmError::Deserialize)
}

pub async fn raw_exec(db: &D1Database, sql: &str, params: &[Value]) -> Result<(), OrmError> {
    let js = to_js_vec(params);
    db.prepare(sql)
        .bind(&js).map_err(|_| OrmError::Bind)?
        .run().await.map_err(|_| OrmError::Execute)?;
    Ok(())
}