@rocicorp/zero-sqlite3 1.0.10 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -43,6 +43,7 @@ declare namespace BetterSqlite3 {
43
43
  scanStatusV2(idx: number, opcode: ScanStatOpcode.SQLITE_SCANSTAT_PARENTID, resetFlag: number): number | undefined;
44
44
  scanStatusV2(idx: number, opcode: ScanStatOpcode.SQLITE_SCANSTAT_NCYCLE, resetFlag: number): number | undefined;
45
45
  scanStatusV2(idx: number, opcode: ScanStatOpcode, resetFlag: number): number | string | undefined;
46
+ scanStatusReset(): this;
46
47
  }
47
48
 
48
49
  interface ColumnDefinition {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocicorp/zero-sqlite3",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
4
4
  "description": "better-sqlite3 on bedrock",
5
5
  "homepage": "https://github.com/rocicorp/zero-sqlite3",
6
6
  "author": "Rocicorp",
@@ -65,6 +65,7 @@ INIT(Statement::Init) {
65
65
  SetPrototypeMethod(isolate, data, t, "safeIntegers", JS_safeIntegers);
66
66
  SetPrototypeMethod(isolate, data, t, "columns", JS_columns);
67
67
  SetPrototypeMethod(isolate, data, t, "scanStatusV2", JS_scanStatusV2);
68
+ SetPrototypeMethod(isolate, data, t, "scanStatusReset", JS_scanStatusReset);
68
69
  SetPrototypeGetter(isolate, data, t, "busy", JS_busy);
69
70
  return t->GetFunction(OnlyContext).ToLocalChecked();
70
71
  }
@@ -416,12 +417,22 @@ NODE_METHOD(Statement::JS_scanStatusV2) {
416
417
  }
417
418
  return;
418
419
  }
420
+ case SQLITE_SCANSTAT_SELECTID:
421
+ case SQLITE_SCANSTAT_PARENTID: {
422
+ // Integer opcodes (int)
423
+ int pOut;
424
+ rc = sqlite3_stmt_scanstatus_v2(stmt->handle, idx, opcode, flags, (void*)&pOut);
425
+ if (rc == SQLITE_OK) {
426
+ info.GetReturnValue().Set(v8::Number::New(isolate, (double)pOut));
427
+ } else {
428
+ info.GetReturnValue().Set(v8::Undefined(isolate));
429
+ }
430
+ return;
431
+ }
419
432
  case SQLITE_SCANSTAT_NLOOP:
420
433
  case SQLITE_SCANSTAT_NVISIT:
421
- case SQLITE_SCANSTAT_SELECTID:
422
- case SQLITE_SCANSTAT_PARENTID:
423
434
  case SQLITE_SCANSTAT_NCYCLE: {
424
- // Integer opcodes
435
+ // Integer opcodes (int64)
425
436
  sqlite3_int64 pOut;
426
437
  rc = sqlite3_stmt_scanstatus_v2(stmt->handle, idx, opcode, flags, (void*)&pOut);
427
438
  if (rc == SQLITE_OK) {
@@ -440,6 +451,15 @@ NODE_METHOD(Statement::JS_scanStatusV2) {
440
451
  }
441
452
  }
442
453
 
454
+ NODE_METHOD(Statement::JS_scanStatusReset) {
455
+ Statement* stmt = Unwrap<Statement>(info.This());
456
+ REQUIRE_DATABASE_OPEN(stmt->db->GetState());
457
+ REQUIRE_DATABASE_NOT_BUSY(stmt->db->GetState());
458
+
459
+ sqlite3_stmt_scanstatus_reset(stmt->handle);
460
+ info.GetReturnValue().Set(info.This());
461
+ }
462
+
443
463
  NODE_GETTER(Statement::JS_busy) {
444
464
  Statement* stmt = Unwrap<Statement>(info.This());
445
465
  info.GetReturnValue().Set(stmt->alive && stmt->locked);
@@ -44,6 +44,7 @@ private:
44
44
  static NODE_METHOD(JS_safeIntegers);
45
45
  static NODE_METHOD(JS_columns);
46
46
  static NODE_METHOD(JS_scanStatusV2);
47
+ static NODE_METHOD(JS_scanStatusReset);
47
48
  static NODE_GETTER(JS_busy);
48
49
 
49
50
  Database* const db;