GeezerVison is showing github.com — sqlite: add DatabaseSync.prototype.isOpen · nodejs/node@5652da6
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: doc/api/sqlite.md +8Lines changed: 8 additions & 0 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -192,6 +192,14 @@ added: v23.5.0 | 192 | 192 | This method is used to create SQLite user-defined functions. This method is a | 193 | 193 | wrapper around [`sqlite3_create_function_v2()`][]. | 194 | 194 |
| | 195 | +### `database.isOpen` | | 196 | + | | 197 | +<!-- YAML | | 198 | +added: REPLACEME | | 199 | +--> | | 200 | + | | 201 | +* {boolean} Whether the database is currently open or not. | | 202 | + | 195 | 203 | ### `database.open()` | 196 | 204 |
| 197 | 205 | <!-- YAML | |
Collapse file Copy file name to clipboardExpand all lines: src/node_sqlite.cc +10Lines changed: 10 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -767,6 +767,12 @@ void DatabaseSync::Open(const FunctionCallbackInfo<Value>& args) { | 767 | 767 | db->Open(); | 768 | 768 | } | 769 | 769 |
| | 770 | +void DatabaseSync::IsOpenGetter(const FunctionCallbackInfo<Value>& args) { | | 771 | + DatabaseSync* db; | | 772 | + ASSIGN_OR_RETURN_UNWRAP(&db, args.This()); | | 773 | + args.GetReturnValue().Set(db->IsOpen()); | | 774 | +} | | 775 | + | 770 | 776 | void DatabaseSync::Close(const FunctionCallbackInfo<Value>& args) { | 771 | 777 | DatabaseSync* db; | 772 | 778 | ASSIGN_OR_RETURN_UNWRAP(&db, args.This()); | @@ -2247,6 +2253,10 @@ static void Initialize(Local<Object> target, | 2247 | 2253 | DatabaseSync::EnableLoadExtension); | 2248 | 2254 | SetProtoMethod( | 2249 | 2255 | isolate, db_tmpl, "loadExtension", DatabaseSync::LoadExtension); | | 2256 | + SetSideEffectFreeGetter(isolate, | | 2257 | + db_tmpl, | | 2258 | + FIXED_ONE_BYTE_STRING(isolate, "isOpen"), | | 2259 | + DatabaseSync::IsOpenGetter); | 2250 | 2260 | SetConstructorFunction(context, target, "DatabaseSync", db_tmpl); | 2251 | 2261 | SetConstructorFunction(context, | 2252 | 2262 | target, | |
Collapse file Copy file name to clipboardExpand all lines: src/node_sqlite.h +1Lines changed: 1 addition & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -55,6 +55,7 @@ class DatabaseSync : public BaseObject { | 55 | 55 | void MemoryInfo(MemoryTracker* tracker) const override; | 56 | 56 | static void New(const v8::FunctionCallbackInfo<v8::Value>& args); | 57 | 57 | static void Open(const v8::FunctionCallbackInfo<v8::Value>& args); | | 58 | + static void IsOpenGetter(const v8::FunctionCallbackInfo<v8::Value>& args); | 58 | 59 | static void Close(const v8::FunctionCallbackInfo<v8::Value>& args); | 59 | 60 | static void Prepare(const v8::FunctionCallbackInfo<v8::Value>& args); | 60 | 61 | static void Exec(const v8::FunctionCallbackInfo<v8::Value>& args); | |
Collapse file Copy file name to clipboardExpand all lines: test/parallel/test-sqlite-database-sync.js +9Lines changed: 9 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -172,41 +172,50 @@ suite('DatabaseSync.prototype.open()', () => { | 172 | 172 | const db = new DatabaseSync(dbPath, { open: false }); | 173 | 173 | t.after(() => { db.close(); }); | 174 | 174 |
| | 175 | + t.assert.strictEqual(db.isOpen, false); | 175 | 176 | t.assert.strictEqual(existsSync(dbPath), false); | 176 | 177 | t.assert.strictEqual(db.open(), undefined); | | 178 | + t.assert.strictEqual(db.isOpen, true); | 177 | 179 | t.assert.strictEqual(existsSync(dbPath), true); | 178 | 180 | }); | 179 | 181 |
| 180 | 182 | test('throws if database is already open', (t) => { | 181 | 183 | const db = new DatabaseSync(nextDb(), { open: false }); | 182 | 184 | t.after(() => { db.close(); }); | 183 | 185 |
| | 186 | + t.assert.strictEqual(db.isOpen, false); | 184 | 187 | db.open(); | | 188 | + t.assert.strictEqual(db.isOpen, true); | 185 | 189 | t.assert.throws(() => { | 186 | 190 | db.open(); | 187 | 191 | }, { | 188 | 192 | code: 'ERR_INVALID_STATE', | 189 | 193 | message: /database is already open/, | 190 | 194 | }); | | 195 | + t.assert.strictEqual(db.isOpen, true); | 191 | 196 | }); | 192 | 197 | }); | 193 | 198 |
| 194 | 199 | suite('DatabaseSync.prototype.close()', () => { | 195 | 200 | test('closes an open database connection', (t) => { | 196 | 201 | const db = new DatabaseSync(nextDb()); | 197 | 202 |
| | 203 | + t.assert.strictEqual(db.isOpen, true); | 198 | 204 | t.assert.strictEqual(db.close(), undefined); | | 205 | + t.assert.strictEqual(db.isOpen, false); | 199 | 206 | }); | 200 | 207 |
| 201 | 208 | test('throws if database is not open', (t) => { | 202 | 209 | const db = new DatabaseSync(nextDb(), { open: false }); | 203 | 210 |
| | 211 | + t.assert.strictEqual(db.isOpen, false); | 204 | 212 | t.assert.throws(() => { | 205 | 213 | db.close(); | 206 | 214 | }, { | 207 | 215 | code: 'ERR_INVALID_STATE', | 208 | 216 | message: /database is not open/, | 209 | 217 | }); | | 218 | + t.assert.strictEqual(db.isOpen, false); | 210 | 219 | }); | 211 | 220 | }); | 212 | 221 |
| |
|