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::sync::Arc;

use wasmtime::component::{HasData, ResourceTable};

use crate::sqldb::SqlDB;

pub mod generated {
    wasmtime::component::bindgen!({
        path: ["./wit"],
        world: "wasm-sql:core/host",
        imports: {
            "wasm-sql:core/pool": async,
            "wasm-sql:core/transaction": async,
            "wasm-sql:core/connection": async,
            "wasm-sql:core/query-types": trappable,
        },
        with: {
            "wasm-sql:core/query-types.query-results": crate::core::bindings::query_results::QueryResultsImpl,
            "wasm-sql:core/query-types.sql-arguments": crate::core::bindings::sql_arguments::SqlArgumentsImpl,
            "wasm-sql:core/transaction.transaction": crate::core::bindings::transaction::TransactionImpl,
            "wasm-sql:core/connection.connection": crate::core::bindings::connection::ConnectionImpl,
        }
    });
}

#[allow(unused)]
pub struct SqlHostState {
    pub(crate) table: ResourceTable,
    pub(crate) sql_db: Arc<SqlDB>,
}

impl SqlHostState {
    pub fn new(db: Arc<SqlDB>) -> Self {
        Self {
            table: ResourceTable::new(),
            sql_db: db,
        }
    }
}

impl HasData for SqlHostState {
    type Data<'a>
        = &'a mut SqlHostState
    where
        Self: 'a;
}

impl crate::core::bindings::generated::wasm_sql::core::util_types::Host for SqlHostState {}
impl crate::core::bindings::generated::wasm_sql::core::codecs::Host for SqlHostState {}

pub(crate) mod codec_utils;
pub(crate) mod connection;
pub(crate) mod error;
pub(crate) mod executor;
pub(crate) mod pool;
pub(crate) mod query;
pub(crate) mod query_results;
pub(crate) mod sql_arguments;
pub(crate) mod transaction;