| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -597,7 +597,8 @@ void DatabaseSync::Prepare(const FunctionCallbackInfo<Value>& args) { | |||
| 597 | 597 | sqlite3_stmt* s = nullptr; | |
| 598 | 598 | int r = sqlite3_prepare_v2(db->connection_, *sql, -1, &s, 0); | |
| 599 | 599 | CHECK_ERROR_OR_THROW(env->isolate(), db, r, SQLITE_OK, void()); | |
| 600 | - BaseObjectPtr<StatementSync> stmt = StatementSync::Create(env, db, s); | ||
| 600 | + BaseObjectPtr<StatementSync> stmt = | ||
| 601 | + StatementSync::Create(env, BaseObjectPtr<DatabaseSync>(db), s); | ||
| 601 | 602 | db->statements_.insert(stmt.get()); | |
| 602 | 603 | args.GetReturnValue().Set(stmt->object()); | |
| 603 | 604 | } | |
@@ -1033,11 +1034,10 @@ void DatabaseSync::LoadExtension(const FunctionCallbackInfo<Value>& args) { | |||
| 1033 | 1034 | ||
| 1034 | 1035 | StatementSync::StatementSync(Environment* env, | |
| 1035 | 1036 | Local<Object> object, | |
| 1036 | - DatabaseSync* db, | ||
| 1037 | + BaseObjectPtr<DatabaseSync> db, | ||
| 1037 | 1038 | sqlite3_stmt* stmt) | |
| 1038 | - : BaseObject(env, object) { | ||
| 1039 | + : BaseObject(env, object), db_(std::move(db)) { | ||
| 1039 | 1040 | MakeWeak(); | |
| 1040 | - db_ = db; | ||
| 1041 | 1041 | statement_ = stmt; | |
| 1042 | 1042 | // In the future, some of these options could be set at the database | |
| 1043 | 1043 | // connection level and inherited by statements to reduce boilerplate. | |
@@ -1065,7 +1065,7 @@ inline bool StatementSync::IsFinalized() { | |||
| 1065 | 1065 | ||
| 1066 | 1066 | bool StatementSync::BindParams(const FunctionCallbackInfo<Value>& args) { | |
| 1067 | 1067 | int r = sqlite3_clear_bindings(statement_); | |
| 1068 | - CHECK_ERROR_OR_THROW(env()->isolate(), db_, r, SQLITE_OK, false); | ||
| 1068 | + CHECK_ERROR_OR_THROW(env()->isolate(), db_.get(), r, SQLITE_OK, false); | ||
| 1069 | 1069 | ||
| 1070 | 1070 | int anon_idx = 1; | |
| 1071 | 1071 | int anon_start = 0; | |
@@ -1199,7 +1199,7 @@ bool StatementSync::BindValue(const Local<Value>& value, const int index) { | |||
| 1199 | 1199 | return false; | |
| 1200 | 1200 | } | |
| 1201 | 1201 | ||
| 1202 | - CHECK_ERROR_OR_THROW(env()->isolate(), db_, r, SQLITE_OK, false); | ||
| 1202 | + CHECK_ERROR_OR_THROW(env()->isolate(), db_.get(), r, SQLITE_OK, false); | ||
| 1203 | 1203 | return true; | |
| 1204 | 1204 | } | |
| 1205 | 1205 | ||
@@ -1265,7 +1265,7 @@ void StatementSync::All(const FunctionCallbackInfo<Value>& args) { | |||
| 1265 | 1265 | env, stmt->IsFinalized(), "statement has been finalized"); | |
| 1266 | 1266 | Isolate* isolate = env->isolate(); | |
| 1267 | 1267 | int r = sqlite3_reset(stmt->statement_); | |
| 1268 | - CHECK_ERROR_OR_THROW(isolate, stmt->db_, r, SQLITE_OK, void()); | ||
| 1268 | + CHECK_ERROR_OR_THROW(isolate, stmt->db_.get(), r, SQLITE_OK, void()); | ||
| 1269 | 1269 | ||
| 1270 | 1270 | if (!stmt->BindParams(args)) { | |
| 1271 | 1271 | return; | |
@@ -1298,7 +1298,7 @@ void StatementSync::All(const FunctionCallbackInfo<Value>& args) { | |||
| 1298 | 1298 | rows.emplace_back(row); | |
| 1299 | 1299 | } | |
| 1300 | 1300 | ||
| 1301 | - CHECK_ERROR_OR_THROW(isolate, stmt->db_, r, SQLITE_DONE, void()); | ||
| 1301 | + CHECK_ERROR_OR_THROW(isolate, stmt->db_.get(), r, SQLITE_DONE, void()); | ||
| 1302 | 1302 | args.GetReturnValue().Set(Array::New(isolate, rows.data(), rows.size())); | |
| 1303 | 1303 | } | |
| 1304 | 1304 | ||
@@ -1383,7 +1383,8 @@ void StatementSync::IterateNextCallback( | |||
| 1383 | 1383 | ||
| 1384 | 1384 | int r = sqlite3_step(stmt->statement_); | |
| 1385 | 1385 | if (r != SQLITE_ROW) { | |
| 1386 | - CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_, r, SQLITE_DONE, void()); | ||
| 1386 | + CHECK_ERROR_OR_THROW( | ||
| 1387 | + env->isolate(), stmt->db_.get(), r, SQLITE_DONE, void()); | ||
| 1387 | 1388 | ||
| 1388 | 1389 | // cleanup when no more rows to fetch | |
| 1389 | 1390 | sqlite3_reset(stmt->statement_); | |
@@ -1439,7 +1440,7 @@ void StatementSync::Iterate(const FunctionCallbackInfo<Value>& args) { | |||
| 1439 | 1440 | auto isolate = env->isolate(); | |
| 1440 | 1441 | auto context = env->context(); | |
| 1441 | 1442 | int r = sqlite3_reset(stmt->statement_); | |
| 1442 | - CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_, r, SQLITE_OK, void()); | ||
| 1443 | + CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_.get(), r, SQLITE_OK, void()); | ||
| 1443 | 1444 | ||
| 1444 | 1445 | if (!stmt->BindParams(args)) { | |
| 1445 | 1446 | return; | |
@@ -1516,7 +1517,7 @@ void StatementSync::Get(const FunctionCallbackInfo<Value>& args) { | |||
| 1516 | 1517 | env, stmt->IsFinalized(), "statement has been finalized"); | |
| 1517 | 1518 | Isolate* isolate = env->isolate(); | |
| 1518 | 1519 | int r = sqlite3_reset(stmt->statement_); | |
| 1519 | - CHECK_ERROR_OR_THROW(isolate, stmt->db_, r, SQLITE_OK, void()); | ||
| 1520 | + CHECK_ERROR_OR_THROW(isolate, stmt->db_.get(), r, SQLITE_OK, void()); | ||
| 1520 | 1521 | ||
| 1521 | 1522 | if (!stmt->BindParams(args)) { | |
| 1522 | 1523 | return; | |
@@ -1526,7 +1527,7 @@ void StatementSync::Get(const FunctionCallbackInfo<Value>& args) { | |||
| 1526 | 1527 | r = sqlite3_step(stmt->statement_); | |
| 1527 | 1528 | if (r == SQLITE_DONE) return; | |
| 1528 | 1529 | if (r != SQLITE_ROW) { | |
| 1529 | - THROW_ERR_SQLITE_ERROR(isolate, stmt->db_); | ||
| 1530 | + THROW_ERR_SQLITE_ERROR(isolate, stmt->db_.get()); | ||
| 1530 | 1531 | return; | |
| 1531 | 1532 | } | |
| 1532 | 1533 | ||
@@ -1562,7 +1563,7 @@ void StatementSync::Run(const FunctionCallbackInfo<Value>& args) { | |||
| 1562 | 1563 | THROW_AND_RETURN_ON_BAD_STATE( | |
| 1563 | 1564 | env, stmt->IsFinalized(), "statement has been finalized"); | |
| 1564 | 1565 | int r = sqlite3_reset(stmt->statement_); | |
| 1565 | - CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_, r, SQLITE_OK, void()); | ||
| 1566 | + CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_.get(), r, SQLITE_OK, void()); | ||
| 1566 | 1567 | ||
| 1567 | 1568 | if (!stmt->BindParams(args)) { | |
| 1568 | 1569 | return; | |
@@ -1571,7 +1572,7 @@ void StatementSync::Run(const FunctionCallbackInfo<Value>& args) { | |||
| 1571 | 1572 | auto reset = OnScopeLeave([&]() { sqlite3_reset(stmt->statement_); }); | |
| 1572 | 1573 | r = sqlite3_step(stmt->statement_); | |
| 1573 | 1574 | if (r != SQLITE_ROW && r != SQLITE_DONE) { | |
| 1574 | - THROW_ERR_SQLITE_ERROR(env->isolate(), stmt->db_); | ||
| 1575 | + THROW_ERR_SQLITE_ERROR(env->isolate(), stmt->db_.get()); | ||
| 1575 | 1576 | return; | |
| 1576 | 1577 | } | |
| 1577 | 1578 | ||
@@ -1748,9 +1749,8 @@ Local<FunctionTemplate> StatementSync::GetConstructorTemplate( | |||
| 1748 | 1749 | return tmpl; | |
| 1749 | 1750 | } | |
| 1750 | 1751 | ||
| 1751 | - BaseObjectPtr<StatementSync> StatementSync::Create(Environment* env, | ||
| 1752 | - DatabaseSync* db, | ||
| 1753 | - sqlite3_stmt* stmt) { | ||
| 1752 | + BaseObjectPtr<StatementSync> StatementSync::Create( | ||
| 1753 | + Environment* env, BaseObjectPtr<DatabaseSync> db, sqlite3_stmt* stmt) { | ||
| 1754 | 1754 | Local<Object> obj; | |
| 1755 | 1755 | if (!GetConstructorTemplate(env) | |
| 1756 | 1756 | ->InstanceTemplate() | |
@@ -1759,7 +1759,7 @@ BaseObjectPtr<StatementSync> StatementSync::Create(Environment* env, | |||
| 1759 | 1759 | return BaseObjectPtr<StatementSync>(); | |
| 1760 | 1760 | } | |
| 1761 | 1761 | ||
| 1762 | - return MakeBaseObject<StatementSync>(env, obj, db, stmt); | ||
| 1762 | + return MakeBaseObject<StatementSync>(env, obj, std::move(db), stmt); | ||
| 1763 | 1763 | } | |
| 1764 | 1764 | ||
| 1765 | 1765 | Session::Session(Environment* env, | |
@@ -1826,7 +1826,7 @@ void Session::Changeset(const FunctionCallbackInfo<Value>& args) { | |||
| 1826 | 1826 | void* pChangeset; | |
| 1827 | 1827 | int r = sqliteChangesetFunc(session->session_, &nChangeset, &pChangeset); | |
| 1828 | 1828 | CHECK_ERROR_OR_THROW( | |
| 1829 | - env->isolate(), session->database_, r, SQLITE_OK, void()); | ||
| 1829 | + env->isolate(), session->database_.get(), r, SQLITE_OK, void()); | ||
| 1830 | 1830 | ||
| 1831 | 1831 | auto freeChangeset = OnScopeLeave([&] { sqlite3_free(pChangeset); }); | |
| 1832 | 1832 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -102,13 +102,13 @@ class StatementSync : public BaseObject { | |||
| 102 | 102 | public: | |
| 103 | 103 | StatementSync(Environment* env, | |
| 104 | 104 | v8::Local<v8::Object> object, | |
| 105 | - DatabaseSync* db, | ||
| 105 | + BaseObjectPtr<DatabaseSync> db, | ||
| 106 | 106 | sqlite3_stmt* stmt); | |
| 107 | 107 | void MemoryInfo(MemoryTracker* tracker) const override; | |
| 108 | 108 | static v8::Local<v8::FunctionTemplate> GetConstructorTemplate( | |
| 109 | 109 | Environment* env); | |
| 110 | 110 | static BaseObjectPtr<StatementSync> Create(Environment* env, | |
| 111 | - DatabaseSync* db, | ||
| 111 | + BaseObjectPtr<DatabaseSync> db, | ||
| 112 | 112 | sqlite3_stmt* stmt); | |
| 113 | 113 | static void All(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 114 | 114 | static void Iterate(const v8::FunctionCallbackInfo<v8::Value>& args); | |
@@ -130,7 +130,7 @@ class StatementSync : public BaseObject { | |||
| 130 | 130 | ||
| 131 | 131 | private: | |
| 132 | 132 | ~StatementSync() override; | |
| 133 | - DatabaseSync* db_; | ||
| 133 | + BaseObjectPtr<DatabaseSync> db_; | ||
| 134 | 134 | sqlite3_stmt* statement_; | |
| 135 | 135 | bool use_big_ints_; | |
| 136 | 136 | bool allow_bare_named_params_; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -86,12 +86,14 @@ suite('StatementSync.prototype.all()', () => { | |||
| 86 | 86 | suite('StatementSync.prototype.iterate()', () => { | |
| 87 | 87 | test('executes a query and returns an empty iterator on no results', (t) => { | |
| 88 | 88 | const db = new DatabaseSync(nextDb()); | |
| 89 | + t.after(() => { db.close(); }); | ||
| 89 | 90 | const stmt = db.prepare('CREATE TABLE storage(key TEXT, val TEXT)'); | |
| 90 | 91 | t.assert.deepStrictEqual(stmt.iterate().toArray(), []); | |
| 91 | 92 | }); | |
| 92 | 93 | ||
| 93 | 94 | test('executes a query and returns all results', (t) => { | |
| 94 | 95 | const db = new DatabaseSync(nextDb()); | |
| 96 | + t.after(() => { db.close(); }); | ||
| 95 | 97 | let stmt = db.prepare('CREATE TABLE storage(key TEXT, val TEXT)'); | |
| 96 | 98 | t.assert.deepStrictEqual(stmt.run(), { changes: 0, lastInsertRowid: 0 }); | |
| 97 | 99 | stmt = db.prepare('INSERT INTO storage (key, val) VALUES (?, ?)'); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments