Skip to main content

d1_orm_engine/
raw.rs

1use d1_orm_query::Value;
2use serde::Deserialize;
3use worker::D1Database;
4use crate::{convert::to_js_vec, error::OrmError};
5
6pub async fn raw_query<M>(db: &D1Database, sql: &str, params: &[Value]) -> Result<Vec<M>, OrmError>
7where
8    M: for<'de> Deserialize<'de>,
9{
10    let js = to_js_vec(params);
11    let result = db.prepare(sql)
12        .bind(&js).map_err(|_| OrmError::Bind)?
13        .all().await.map_err(|_| OrmError::Execute)?;
14    result.results::<M>().map_err(|_| OrmError::Deserialize)
15}
16
17pub async fn raw_exec(db: &D1Database, sql: &str, params: &[Value]) -> Result<(), OrmError> {
18    let js = to_js_vec(params);
19    db.prepare(sql)
20        .bind(&js).map_err(|_| OrmError::Bind)?
21        .run().await.map_err(|_| OrmError::Execute)?;
22    Ok(())
23}