Skip to main content

wasm_sql/core/
bindings.rs

1use std::sync::Arc;
2
3use wasmtime::component::{HasData, ResourceTable};
4
5use crate::sqldb::SqlDB;
6
7pub mod generated {
8    wasmtime::component::bindgen!({
9        path: ["./wit"],
10        world: "wasm-sql:core/host",
11        imports: {
12            "wasm-sql:core/pool": async,
13            "wasm-sql:core/transaction": async,
14            "wasm-sql:core/connection": async,
15            "wasm-sql:core/query-types": trappable,
16        },
17        with: {
18            "wasm-sql:core/query-types.query-results": crate::core::bindings::query_results::QueryResultsImpl,
19            "wasm-sql:core/query-types.sql-arguments": crate::core::bindings::sql_arguments::SqlArgumentsImpl,
20            "wasm-sql:core/transaction.transaction": crate::core::bindings::transaction::TransactionImpl,
21            "wasm-sql:core/connection.connection": crate::core::bindings::connection::ConnectionImpl,
22        }
23    });
24}
25
26#[allow(unused)]
27pub struct SqlHostState {
28    pub(crate) table: ResourceTable,
29    pub(crate) sql_db: Arc<SqlDB>,
30}
31
32impl SqlHostState {
33    pub fn new(db: Arc<SqlDB>) -> Self {
34        Self {
35            table: ResourceTable::new(),
36            sql_db: db,
37        }
38    }
39}
40
41impl HasData for SqlHostState {
42    type Data<'a>
43        = &'a mut SqlHostState
44    where
45        Self: 'a;
46}
47
48impl crate::core::bindings::generated::wasm_sql::core::util_types::Host for SqlHostState {}
49impl crate::core::bindings::generated::wasm_sql::core::codecs::Host for SqlHostState {}
50
51pub(crate) mod codec_utils;
52pub(crate) mod connection;
53pub(crate) mod error;
54pub(crate) mod executor;
55pub(crate) mod pool;
56pub(crate) mod query;
57pub(crate) mod query_results;
58pub(crate) mod sql_arguments;
59pub(crate) mod transaction;