wasm-sql 0.1.6

Wasmtime host implementation for a SQL component WIT interface. Enables Wasm components to interact with SQL databases via the WebAssembly Component Model.
Documentation
use std::cell::RefCell;

use crate::core::bindings::generated::wasm_sql::core::query_types::SqlArguments;
use crate::{core::bindings::SqlHostState, sqldb::SqlDatabase};

#[allow(unused)]
pub struct SqlArgumentsImpl {
    pub(crate) args: RefCell<<SqlDatabase as sqlx::Database>::Arguments<'static>>,
}

impl crate::core::bindings::generated::wasm_sql::core::query_types::HostSqlArguments for SqlHostState {
    fn new(&mut self) -> Result<wasmtime::component::Resource<SqlArgumentsImpl>, wasmtime::Error> {
        let args = self.table.push(SqlArgumentsImpl {
            args: RefCell::new(<SqlDatabase as sqlx::Database>::Arguments::default()),
        })?;

        Ok(args)
    }

    fn drop(&mut self, rep: wasmtime::component::Resource<SqlArguments>) -> wasmtime::Result<()> {
        self.table.delete(rep)?;

        Ok(())
    }
}