diff --git a/bindings/javascript/__test__/better-sqlite3.spec.mjs b/bindings/javascript/__test__/better-sqlite3.spec.mjs index 8e32aea53..b7ec7cf01 100644 --- a/bindings/javascript/__test__/better-sqlite3.spec.mjs +++ b/bindings/javascript/__test__/better-sqlite3.spec.mjs @@ -32,6 +32,11 @@ test("Property .readonly of database if not set", async (t) => { t.is(db.readonly, false); }); +test("Property .open of database", async (t) => { + const db = new Database("foobar.db"); + t.is(db.open, true); +}); + test("Statement.get() returns data", async (t) => { const [db] = await connect(":memory:"); const stmt = db.prepare("SELECT 1"); diff --git a/bindings/javascript/src/lib.rs b/bindings/javascript/src/lib.rs index c55296e0f..248c240b4 100644 --- a/bindings/javascript/src/lib.rs +++ b/bindings/javascript/src/lib.rs @@ -35,8 +35,8 @@ pub struct Database { pub readonly: bool, // #[napi(writable = false)] // pub in_transaction: bool, - // #[napi(writable = false)] - // pub open: bool, + #[napi(writable = false)] + pub open: bool, #[napi(writable = false)] pub name: String, _db: Arc, @@ -80,6 +80,7 @@ impl Database { memory, _db: db, conn, + open: true, name: path, io, }) @@ -135,6 +136,11 @@ impl Database { self.readonly } + #[napi] + pub fn open(&self) -> bool { + self.open + } + #[napi] pub fn backup(&self) { todo!() @@ -208,8 +214,11 @@ impl Database { } #[napi] - pub fn close(&self) -> napi::Result<()> { - self.conn.close().map_err(into_napi_error)?; + pub fn close(&mut self) -> napi::Result<()> { + if self.open { + self.conn.close().map_err(into_napi_error)?; + self.open = false; + } Ok(()) } }