rocksdb-native 1.1.0 → 2.0.0

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/README.md CHANGED
@@ -13,13 +13,13 @@ const RocksDB = require('rocksdb-native')
13
13
 
14
14
  const db = new RocksDB('./example.db')
15
15
 
16
- const b = db.batch()
16
+ const w = db.write()
17
+ w.put('hello', 'world')
18
+ await w.flush()
17
19
 
18
- b.add('hello', 'world')
19
- await b.write()
20
-
21
- const p = b.add('hello')
22
- b.read()
20
+ const r = db.read()
21
+ const p = r.get('hello')
22
+ r.flush()
23
23
 
24
24
  console.log(await p)
25
25
  ```
package/binding.c CHANGED
@@ -59,10 +59,9 @@ typedef struct {
59
59
  } rocksdb_native_iterator_t;
60
60
 
61
61
  typedef struct {
62
- rocksdb_batch_t handle;
62
+ rocksdb_read_batch_t handle;
63
63
 
64
- rocksdb_slice_t *keys;
65
- rocksdb_slice_t *values;
64
+ rocksdb_read_t *reads;
66
65
  char **errors;
67
66
 
68
67
  size_t capacity;
@@ -70,7 +69,20 @@ typedef struct {
70
69
  js_env_t *env;
71
70
  js_ref_t *ctx;
72
71
  js_ref_t *on_status;
73
- } rocksdb_native_batch_t;
72
+ } rocksdb_native_read_batch_t;
73
+
74
+ typedef struct {
75
+ rocksdb_write_batch_t handle;
76
+
77
+ rocksdb_write_t *writes;
78
+ char **errors;
79
+
80
+ size_t capacity;
81
+
82
+ js_env_t *env;
83
+ js_ref_t *ctx;
84
+ js_ref_t *on_status;
85
+ } rocksdb_native_write_batch_t;
74
86
 
75
87
  static void
76
88
  rocksdb_native__on_free (js_env_t *env, void *data, void *finalize_hint) {
@@ -282,17 +294,13 @@ static js_value_t *
282
294
  rocksdb_native_iterator_init (js_env_t *env, js_callback_info_t *info) {
283
295
  int err;
284
296
 
285
- size_t argc = 5;
286
- js_value_t *argv[5];
297
+ size_t argc = 4;
298
+ js_value_t *argv[4];
287
299
 
288
300
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
289
301
  assert(err == 0);
290
302
 
291
- assert(argc == 5);
292
-
293
- rocksdb_native_t *db;
294
- err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
295
- assert(err == 0);
303
+ assert(argc == 4);
296
304
 
297
305
  js_value_t *handle;
298
306
 
@@ -300,22 +308,19 @@ rocksdb_native_iterator_init (js_env_t *env, js_callback_info_t *info) {
300
308
  err = js_create_arraybuffer(env, sizeof(rocksdb_native_iterator_t), (void **) &iterator, &handle);
301
309
  assert(err == 0);
302
310
 
303
- err = rocksdb_iterator_init(&db->handle, &iterator->handle);
304
- assert(err == 0);
305
-
306
311
  iterator->env = env;
307
312
  iterator->handle.data = (void *) iterator;
308
313
 
309
- err = js_create_reference(env, argv[1], 1, &iterator->ctx);
314
+ err = js_create_reference(env, argv[0], 1, &iterator->ctx);
310
315
  assert(err == 0);
311
316
 
312
- err = js_create_reference(env, argv[2], 1, &iterator->on_open);
317
+ err = js_create_reference(env, argv[1], 1, &iterator->on_open);
313
318
  assert(err == 0);
314
319
 
315
- err = js_create_reference(env, argv[3], 1, &iterator->on_close);
320
+ err = js_create_reference(env, argv[2], 1, &iterator->on_close);
316
321
  assert(err == 0);
317
322
 
318
- err = js_create_reference(env, argv[4], 1, &iterator->on_read);
323
+ err = js_create_reference(env, argv[3], 1, &iterator->on_read);
319
324
  assert(err == 0);
320
325
 
321
326
  return handle;
@@ -400,37 +405,41 @@ static js_value_t *
400
405
  rocksdb_native_iterator_open (js_env_t *env, js_callback_info_t *info) {
401
406
  int err;
402
407
 
403
- size_t argc = 6;
404
- js_value_t *argv[6];
408
+ size_t argc = 7;
409
+ js_value_t *argv[7];
405
410
 
406
411
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
407
412
  assert(err == 0);
408
413
 
409
- assert(argc == 6);
414
+ assert(argc == 7);
415
+
416
+ rocksdb_native_t *db;
417
+ err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
418
+ assert(err == 0);
410
419
 
411
420
  rocksdb_native_iterator_t *iterator;
412
- err = js_get_arraybuffer_info(env, argv[0], (void **) &iterator, NULL);
421
+ err = js_get_arraybuffer_info(env, argv[1], (void **) &iterator, NULL);
413
422
  assert(err == 0);
414
423
 
415
424
  rocksdb_range_t range;
416
425
 
417
- err = js_get_typedarray_info(env, argv[1], NULL, (void **) &range.gt.data, &range.gt.len, NULL, NULL);
426
+ err = js_get_typedarray_info(env, argv[2], NULL, (void **) &range.gt.data, &range.gt.len, NULL, NULL);
418
427
  assert(err == 0);
419
428
 
420
- err = js_get_typedarray_info(env, argv[2], NULL, (void **) &range.gte.data, &range.gte.len, NULL, NULL);
429
+ err = js_get_typedarray_info(env, argv[3], NULL, (void **) &range.gte.data, &range.gte.len, NULL, NULL);
421
430
  assert(err == 0);
422
431
 
423
- err = js_get_typedarray_info(env, argv[3], NULL, (void **) &range.lt.data, &range.lt.len, NULL, NULL);
432
+ err = js_get_typedarray_info(env, argv[4], NULL, (void **) &range.lt.data, &range.lt.len, NULL, NULL);
424
433
  assert(err == 0);
425
434
 
426
- err = js_get_typedarray_info(env, argv[4], NULL, (void **) &range.lte.data, &range.lte.len, NULL, NULL);
435
+ err = js_get_typedarray_info(env, argv[5], NULL, (void **) &range.lte.data, &range.lte.len, NULL, NULL);
427
436
  assert(err == 0);
428
437
 
429
438
  bool reverse;
430
- err = js_get_value_bool(env, argv[5], &reverse);
439
+ err = js_get_value_bool(env, argv[6], &reverse);
431
440
  assert(err == 0);
432
441
 
433
- err = rocksdb_iterator_open(&iterator->handle, range, reverse, rocksdb_native__on_iterator_open);
442
+ err = rocksdb_iterator_open(&db->handle, &iterator->handle, range, reverse, rocksdb_native__on_iterator_open);
434
443
  assert(err == 0);
435
444
 
436
445
  return NULL;
@@ -591,41 +600,34 @@ rocksdb_native_iterator_read (js_env_t *env, js_callback_info_t *info) {
591
600
  }
592
601
 
593
602
  static js_value_t *
594
- rocksdb_native_batch_init (js_env_t *env, js_callback_info_t *info) {
603
+ rocksdb_native_read_init (js_env_t *env, js_callback_info_t *info) {
595
604
  int err;
596
605
 
597
- size_t argc = 2;
598
- js_value_t *argv[2];
606
+ size_t argc = 1;
607
+ js_value_t *argv[1];
599
608
 
600
609
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
601
610
  assert(err == 0);
602
611
 
603
- assert(argc == 2);
604
-
605
- rocksdb_native_t *db;
606
- err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
607
- assert(err == 0);
612
+ assert(argc == 1);
608
613
 
609
614
  js_value_t *handle;
610
615
 
611
- rocksdb_native_batch_t *batch;
612
- err = js_create_arraybuffer(env, sizeof(rocksdb_native_batch_t), (void **) &batch, &handle);
613
- assert(err == 0);
614
-
615
- err = rocksdb_batch_init(&db->handle, &batch->handle);
616
+ rocksdb_native_read_batch_t *batch;
617
+ err = js_create_arraybuffer(env, sizeof(rocksdb_native_read_batch_t), (void **) &batch, &handle);
616
618
  assert(err == 0);
617
619
 
618
620
  batch->env = env;
619
621
  batch->handle.data = (void *) batch;
620
622
 
621
- err = js_create_reference(env, argv[1], 1, &batch->ctx);
623
+ err = js_create_reference(env, argv[0], 1, &batch->ctx);
622
624
  assert(err == 0);
623
625
 
624
626
  return handle;
625
627
  }
626
628
 
627
629
  static js_value_t *
628
- rocksdb_native_batch_buffer (js_env_t *env, js_callback_info_t *info) {
630
+ rocksdb_native_read_buffer (js_env_t *env, js_callback_info_t *info) {
629
631
  int err;
630
632
 
631
633
  size_t argc = 2;
@@ -636,7 +638,7 @@ rocksdb_native_batch_buffer (js_env_t *env, js_callback_info_t *info) {
636
638
 
637
639
  assert(argc == 2);
638
640
 
639
- rocksdb_native_batch_t *batch;
641
+ rocksdb_native_read_batch_t *batch;
640
642
  err = js_get_arraybuffer_info(env, argv[0], (void **) &batch, NULL);
641
643
  assert(err == 0);
642
644
 
@@ -647,51 +649,29 @@ rocksdb_native_batch_buffer (js_env_t *env, js_callback_info_t *info) {
647
649
  js_value_t *handle;
648
650
 
649
651
  uint8_t *data;
650
- err = js_create_arraybuffer(env, 2 * capacity * sizeof(rocksdb_slice_t) + capacity * sizeof(char *), (void **) &data, &handle);
652
+ err = js_create_arraybuffer(env, capacity * sizeof(rocksdb_read_t) + capacity * sizeof(char *), (void **) &data, &handle);
651
653
  assert(err == 0);
652
654
 
653
655
  batch->capacity = capacity;
654
656
 
655
657
  size_t offset = 0;
656
658
 
657
- batch->keys = (rocksdb_slice_t *) &data[offset];
658
-
659
- offset += capacity * sizeof(rocksdb_slice_t);
660
-
661
- batch->values = (rocksdb_slice_t *) &data[offset];
659
+ batch->reads = (rocksdb_read_t *) &data[offset];
662
660
 
663
- offset += capacity * sizeof(rocksdb_slice_t);
661
+ offset += capacity * sizeof(rocksdb_read_t);
664
662
 
665
663
  batch->errors = (char **) &data[offset];
666
664
 
667
665
  return handle;
668
666
  }
669
667
 
670
- static inline int
671
- rocksdb_native__get_slices (js_env_t *env, js_value_t *arr, uint32_t len, rocksdb_slice_t *result) {
672
- int err;
673
-
674
- for (uint32_t i = 0; i < len; i++) {
675
- js_value_t *value;
676
- err = js_get_element(env, arr, i, &value);
677
- assert(err == 0);
678
-
679
- rocksdb_slice_t *slice = &result[i];
680
-
681
- err = js_get_typedarray_info(env, value, NULL, (void **) &slice->data, &slice->len, NULL, NULL);
682
- assert(err == 0);
683
- }
684
-
685
- return 0;
686
- }
687
-
688
668
  static void
689
- rocksdb_native__on_batch_read (rocksdb_batch_t *handle, int status) {
669
+ rocksdb_native__on_read (rocksdb_read_batch_t *handle, int status) {
690
670
  int err;
691
671
 
692
672
  assert(status == 0);
693
673
 
694
- rocksdb_native_batch_t *batch = (rocksdb_native_batch_t *) handle->data;
674
+ rocksdb_native_read_batch_t *batch = (rocksdb_native_read_batch_t *) handle->data;
695
675
 
696
676
  js_env_t *env = batch->env;
697
677
 
@@ -721,7 +701,7 @@ rocksdb_native__on_batch_read (rocksdb_batch_t *handle, int status) {
721
701
  err = js_set_element(env, errors, i, result);
722
702
  assert(err == 0);
723
703
  } else {
724
- rocksdb_slice_t *slice = &batch->values[i];
704
+ rocksdb_slice_t *slice = &batch->reads[i].value;
725
705
 
726
706
  err = js_create_external_arraybuffer(env, (void *) slice->data, slice->len, rocksdb_native__on_free, NULL, &result);
727
707
  assert(err == 0);
@@ -746,44 +726,140 @@ rocksdb_native__on_batch_read (rocksdb_batch_t *handle, int status) {
746
726
  }
747
727
 
748
728
  static js_value_t *
749
- rocksdb_native_batch_read (js_env_t *env, js_callback_info_t *info) {
729
+ rocksdb_native_read (js_env_t *env, js_callback_info_t *info) {
750
730
  int err;
751
731
 
752
- size_t argc = 3;
753
- js_value_t *argv[3];
732
+ size_t argc = 4;
733
+ js_value_t *argv[4];
754
734
 
755
735
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
756
736
  assert(err == 0);
757
737
 
758
- assert(argc == 3);
738
+ assert(argc == 4);
759
739
 
760
- rocksdb_native_batch_t *batch;
761
- err = js_get_arraybuffer_info(env, argv[0], (void **) &batch, NULL);
740
+ rocksdb_native_t *db;
741
+ err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
762
742
  assert(err == 0);
763
743
 
764
- uint32_t len;
765
- err = js_get_array_length(env, argv[1], &len);
744
+ rocksdb_native_read_batch_t *batch;
745
+ err = js_get_arraybuffer_info(env, argv[1], (void **) &batch, NULL);
766
746
  assert(err == 0);
767
747
 
768
- err = js_create_reference(env, argv[2], 1, &batch->on_status);
748
+ uint32_t len;
749
+ err = js_get_array_length(env, argv[2], &len);
769
750
  assert(err == 0);
770
751
 
771
- err = rocksdb_native__get_slices(env, argv[1], len, batch->keys);
752
+ err = js_create_reference(env, argv[3], 1, &batch->on_status);
772
753
  assert(err == 0);
773
754
 
774
- err = rocksdb_batch_read(&batch->handle, batch->keys, batch->values, batch->errors, len, rocksdb_native__on_batch_read);
755
+ for (uint32_t i = 0; i < len; i++) {
756
+ js_value_t *read;
757
+ err = js_get_element(env, argv[2], i, &read);
758
+ assert(err == 0);
759
+
760
+ js_value_t *property;
761
+ err = js_get_named_property(env, read, "type", &property);
762
+ assert(err == 0);
763
+
764
+ rocksdb_read_type_t type;
765
+ err = js_get_value_uint32(env, property, &type);
766
+ assert(err == 0);
767
+
768
+ batch->reads[i].type = type;
769
+
770
+ switch (type) {
771
+ case rocksdb_get: {
772
+ rocksdb_slice_t *key = &batch->reads[i].key;
773
+
774
+ err = js_get_named_property(env, read, "key", &property);
775
+ assert(err == 0);
776
+
777
+ err = js_get_typedarray_info(env, property, NULL, (void **) &key->data, &key->len, NULL, NULL);
778
+ assert(err == 0);
779
+ break;
780
+ }
781
+ }
782
+ }
783
+
784
+ err = rocksdb_read(&db->handle, &batch->handle, batch->reads, batch->errors, len, rocksdb_native__on_read);
775
785
  assert(err == 0);
776
786
 
777
787
  return NULL;
778
788
  }
779
789
 
790
+ static js_value_t *
791
+ rocksdb_native_write_init (js_env_t *env, js_callback_info_t *info) {
792
+ int err;
793
+
794
+ size_t argc = 1;
795
+ js_value_t *argv[1];
796
+
797
+ err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
798
+ assert(err == 0);
799
+
800
+ assert(argc == 1);
801
+
802
+ js_value_t *handle;
803
+
804
+ rocksdb_native_write_batch_t *batch;
805
+ err = js_create_arraybuffer(env, sizeof(rocksdb_native_write_batch_t), (void **) &batch, &handle);
806
+ assert(err == 0);
807
+
808
+ batch->env = env;
809
+ batch->handle.data = (void *) batch;
810
+
811
+ err = js_create_reference(env, argv[0], 1, &batch->ctx);
812
+ assert(err == 0);
813
+
814
+ return handle;
815
+ }
816
+
817
+ static js_value_t *
818
+ rocksdb_native_write_buffer (js_env_t *env, js_callback_info_t *info) {
819
+ int err;
820
+
821
+ size_t argc = 2;
822
+ js_value_t *argv[2];
823
+
824
+ err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
825
+ assert(err == 0);
826
+
827
+ assert(argc == 2);
828
+
829
+ rocksdb_native_write_batch_t *batch;
830
+ err = js_get_arraybuffer_info(env, argv[0], (void **) &batch, NULL);
831
+ assert(err == 0);
832
+
833
+ uint32_t capacity;
834
+ err = js_get_value_uint32(env, argv[1], &capacity);
835
+ assert(err == 0);
836
+
837
+ js_value_t *handle;
838
+
839
+ uint8_t *data;
840
+ err = js_create_arraybuffer(env, capacity * sizeof(rocksdb_write_t) + capacity * sizeof(char *), (void **) &data, &handle);
841
+ assert(err == 0);
842
+
843
+ batch->capacity = capacity;
844
+
845
+ size_t offset = 0;
846
+
847
+ batch->writes = (rocksdb_write_t *) &data[offset];
848
+
849
+ offset += capacity * sizeof(rocksdb_write_t);
850
+
851
+ batch->errors = (char **) &data[offset];
852
+
853
+ return handle;
854
+ }
855
+
780
856
  static void
781
- rocksdb_native__on_batch_write (rocksdb_batch_t *handle, int status) {
857
+ rocksdb_native__on_write (rocksdb_write_batch_t *handle, int status) {
782
858
  int err;
783
859
 
784
860
  assert(status == 0);
785
861
 
786
- rocksdb_native_batch_t *batch = (rocksdb_native_batch_t *) handle->data;
862
+ rocksdb_native_write_batch_t *batch = (rocksdb_native_write_batch_t *) handle->data;
787
863
 
788
864
  js_env_t *env = batch->env;
789
865
 
@@ -816,7 +892,7 @@ rocksdb_native__on_batch_write (rocksdb_batch_t *handle, int status) {
816
892
  }
817
893
 
818
894
  static js_value_t *
819
- rocksdb_native_batch_write (js_env_t *env, js_callback_info_t *info) {
895
+ rocksdb_native_write (js_env_t *env, js_callback_info_t *info) {
820
896
  int err;
821
897
 
822
898
  size_t argc = 4;
@@ -827,24 +903,89 @@ rocksdb_native_batch_write (js_env_t *env, js_callback_info_t *info) {
827
903
 
828
904
  assert(argc == 4);
829
905
 
830
- rocksdb_native_batch_t *batch;
831
- err = js_get_arraybuffer_info(env, argv[0], (void **) &batch, NULL);
906
+ rocksdb_native_t *db;
907
+ err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
908
+ assert(err == 0);
909
+
910
+ rocksdb_native_write_batch_t *batch;
911
+ err = js_get_arraybuffer_info(env, argv[1], (void **) &batch, NULL);
832
912
  assert(err == 0);
833
913
 
834
914
  uint32_t len;
835
- err = js_get_array_length(env, argv[1], &len);
915
+ err = js_get_array_length(env, argv[2], &len);
836
916
  assert(err == 0);
837
917
 
838
918
  err = js_create_reference(env, argv[3], 1, &batch->on_status);
839
919
  assert(err == 0);
840
920
 
841
- err = rocksdb_native__get_slices(env, argv[1], len, batch->keys);
842
- assert(err == 0);
921
+ for (uint32_t i = 0; i < len; i++) {
922
+ js_value_t *write;
923
+ err = js_get_element(env, argv[2], i, &write);
924
+ assert(err == 0);
843
925
 
844
- err = rocksdb_native__get_slices(env, argv[2], len, batch->values);
845
- assert(err == 0);
926
+ js_value_t *property;
927
+ err = js_get_named_property(env, write, "type", &property);
928
+ assert(err == 0);
929
+
930
+ rocksdb_write_type_t type;
931
+ err = js_get_value_uint32(env, property, &type);
932
+ assert(err == 0);
933
+
934
+ batch->writes[i].type = type;
935
+
936
+ switch (type) {
937
+ case rocksdb_put: {
938
+ rocksdb_slice_t *key = &batch->writes[i].key;
939
+
940
+ err = js_get_named_property(env, write, "key", &property);
941
+ assert(err == 0);
942
+
943
+ err = js_get_typedarray_info(env, property, NULL, (void **) &key->data, &key->len, NULL, NULL);
944
+ assert(err == 0);
945
+
946
+ rocksdb_slice_t *value = &batch->writes[i].value;
947
+
948
+ err = js_get_named_property(env, write, "value", &property);
949
+ assert(err == 0);
950
+
951
+ err = js_get_typedarray_info(env, property, NULL, (void **) &value->data, &value->len, NULL, NULL);
952
+ assert(err == 0);
953
+ break;
954
+ }
955
+
956
+ case rocksdb_delete: {
957
+ rocksdb_slice_t *key = &batch->writes[i].key;
958
+
959
+ err = js_get_named_property(env, write, "key", &property);
960
+ assert(err == 0);
961
+
962
+ err = js_get_typedarray_info(env, property, NULL, (void **) &key->data, &key->len, NULL, NULL);
963
+ assert(err == 0);
964
+ break;
965
+ }
966
+
967
+ case rocksdb_delete_range: {
968
+ rocksdb_slice_t *start = &batch->writes[i].start;
969
+
970
+ err = js_get_named_property(env, write, "start", &property);
971
+ assert(err == 0);
972
+
973
+ err = js_get_typedarray_info(env, property, NULL, (void **) &start->data, &start->len, NULL, NULL);
974
+ assert(err == 0);
975
+
976
+ rocksdb_slice_t *end = &batch->writes[i].end;
977
+
978
+ err = js_get_named_property(env, write, "end", &property);
979
+ assert(err == 0);
980
+
981
+ err = js_get_typedarray_info(env, property, NULL, (void **) &end->data, &end->len, NULL, NULL);
982
+ assert(err == 0);
983
+ break;
984
+ }
985
+ }
986
+ }
846
987
 
847
- err = rocksdb_batch_write(&batch->handle, batch->keys, batch->values, len, rocksdb_native__on_batch_write);
988
+ err = rocksdb_write(&db->handle, &batch->handle, batch->writes, len, rocksdb_native__on_write);
848
989
  assert(err == 0);
849
990
 
850
991
  return NULL;
@@ -873,10 +1014,28 @@ rocksdb_native_exports (js_env_t *env, js_value_t *exports) {
873
1014
  V("iteratorClose", rocksdb_native_iterator_close)
874
1015
  V("iteratorRead", rocksdb_native_iterator_read)
875
1016
 
876
- V("batchInit", rocksdb_native_batch_init)
877
- V("batchBuffer", rocksdb_native_batch_buffer)
878
- V("batchRead", rocksdb_native_batch_read)
879
- V("batchWrite", rocksdb_native_batch_write)
1017
+ V("readInit", rocksdb_native_read_init)
1018
+ V("readBuffer", rocksdb_native_read_buffer)
1019
+ V("read", rocksdb_native_read)
1020
+
1021
+ V("writeInit", rocksdb_native_write_init)
1022
+ V("writeBuffer", rocksdb_native_write_buffer)
1023
+ V("write", rocksdb_native_write)
1024
+ #undef V
1025
+
1026
+ #define V(name, n) \
1027
+ { \
1028
+ js_value_t *val; \
1029
+ err = js_create_uint32(env, n, &val); \
1030
+ assert(err == 0); \
1031
+ err = js_set_named_property(env, exports, name, val); \
1032
+ assert(err == 0); \
1033
+ }
1034
+
1035
+ V("GET", rocksdb_get)
1036
+ V("PUT", rocksdb_put)
1037
+ V("DELETE", rocksdb_delete)
1038
+ V("DELETE_RANGE", rocksdb_delete_range)
880
1039
  #undef V
881
1040
 
882
1041
  return exports;
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /* global Bare */
2
2
  const ReadyResource = require('ready-resource')
3
3
  const binding = require('./binding')
4
- const Batch = require('./lib/batch')
4
+ const { ReadBatch, WriteBatch } = require('./lib/batch')
5
5
  const Iterator = require('./lib/iterator')
6
6
 
7
7
  const RocksDB = module.exports = class RocksDB extends ReadyResource {
@@ -101,12 +101,16 @@ const RocksDB = module.exports = class RocksDB extends ReadyResource {
101
101
  }
102
102
  }
103
103
 
104
- batch (opts) {
105
- return new Batch(this, opts)
104
+ iterator (opts) {
105
+ return new Iterator(this, opts)
106
106
  }
107
107
 
108
- iterator (start, end, opts) {
109
- return new Iterator(this, start, end, opts)
108
+ read (opts) {
109
+ return new ReadBatch(this, opts)
110
+ }
111
+
112
+ write (opts) {
113
+ return new WriteBatch(this, opts)
110
114
  }
111
115
 
112
116
  static _instances = new Set()