chat_platform_wasm/
storage.rs1use chat_core::error::ChatResult;
2use rusqlite::Connection;
3
4#[cfg(target_arch = "wasm32")]
5use sqlite_wasm_vfs::relaxed_idb::{install, RelaxedIdbCfg};
6#[cfg(target_arch = "wasm32")]
7use sqlite_wasm_rs as ffi;
8
9pub async fn open_storage(name: &str) -> ChatResult<Connection> {
18 #[cfg(target_arch = "wasm32")]
19 {
20 let cfg = RelaxedIdbCfg {
21 vfs_name: name.into(),
22 clear_on_init: false,
23 preload: sqlite_wasm_vfs::relaxed_idb::Preload::All,
24 };
25
26 install::<ffi::WasmOsCallback>(&cfg, true).await.unwrap();
27
28 let conn = Connection::open(format!("{}.db", name))?;
29 conn.execute("PRAGMA synchronous = OFF", [])?;
30
31 Ok(conn)
32 }
33 #[cfg(not(target_arch = "wasm32"))]
34 {
35 let _ = name;
36 let conn = Connection::open_in_memory()?;
37 Ok(conn)
38 }
39}