bonsaif 1.10.31 → 1.10.33

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.
Files changed (2) hide show
  1. package/lib/hookup/redis.js +67 -22
  2. package/package.json +1 -1
@@ -9,31 +9,48 @@
9
9
  let tag = ` ::: B[]NSAIF() ::: => redis.js `;
10
10
 
11
11
 
12
- const scan=async(options,db, key)=>{
12
+ const scan=async(options,db, cursor, pattern, count)=>{ // SCAN cursor [MATCH pattern] [COUNT count]
13
13
  const exec = require("./exec");
14
14
  const redisConn = await exec.redisConn(options);
15
15
  const start = Date.now();
16
- return new Promise((resolve, reject)=>{
16
+
17
+ cursor = cursor!=null ? cursor : '0';
18
+ pattern = pattern!=null ? pattern : '*';
19
+ count = count!=null ? count : 100;
20
+
21
+ return new Promise((resolve, reject)=>{
22
+ try{
23
+ redisConn.select(db,function() { /* ... */ });
24
+
25
+ // SCAN necesita los argumentos expandidos, no como array
26
+ redisConn.scan(cursor, 'MATCH', pattern, 'COUNT', count, function (err, res) {
27
+ if (err) {
28
+ reject(err);
29
+ return;
30
+ }
31
+
32
+ const end = Date.now();
33
+ const time = end - start;
34
+
35
+ // res[0] es el nuevo cursor, res[1] es el array de keys
36
+ resolve({
37
+ "cursor": res[0],
38
+ "keys": res[1],
39
+ "count": res[1].length,
40
+ "time": utl.milisegundosASegundos(time)
41
+ });
42
+
17
43
  try{
18
- redisConn.select(db,function() { /* ... */ });
19
- const redisScan = require('node-redis-scan');
20
- const scanner = new redisScan(redisConn);
21
- scanner.scan(key, (err, matchingKeys) => {
22
- if (err) throw(err);
23
- const end = Date.now();
24
- const time = end - start;
25
- resolve({"count":matchingKeys.length, "keys":matchingKeys, "time":utl.milisegundosASegundos(time)});
26
-
27
- try{
28
- exec.redisClose(redisConn);
29
- }catch(e){
30
- utl.log('err.scan '+e);
31
- }
32
- });
44
+ exec.redisClose(redisConn);
33
45
  }catch(e){
34
- utl.log('err scan: '+e);
46
+ utl.log('err.scan '+e);
35
47
  }
36
- })
48
+ });
49
+ }catch(e){
50
+ utl.log('err scan: '+e);
51
+ reject(e);
52
+ }
53
+ })
37
54
  }
38
55
 
39
56
  const set=async(options, db, key, value, expire )=>{
@@ -743,6 +760,29 @@ const keys=async( options, db, pattern )=>{ // KEYS pattern
743
760
  })
744
761
  }
745
762
 
763
+ const dbsize=async( options, db )=>{ // DBSIZE
764
+ const exec = require("./exec");
765
+ const redisConn = await exec.redisConn(options);
766
+ const start = Date.now();
767
+ return new Promise((resolve, reject)=>{
768
+ try{
769
+ redisConn.select(db,function() { /* ... */ });
770
+ redisConn.dbsize(function (err, res) {
771
+ const end = Date.now();
772
+ const time = end - start;
773
+ resolve({"dbsize":db, "count":res, "err":err, "res":res, "time":utl.milisegundosASegundos(time)});
774
+ try{
775
+ exec.redisClose(redisConn);
776
+ }catch(e){
777
+ utl.log('err.dbsize '+e);
778
+ }
779
+ });
780
+ }catch(e){
781
+ utl.log('err dbsize'+e);
782
+ }
783
+ })
784
+ }
785
+
746
786
  const api=async(options, dbm, json)=>{
747
787
  const exec = require("./exec");
748
788
 
@@ -760,7 +800,7 @@ const api=async(options, dbm, json)=>{
760
800
  let lstop = json.stop!=null?json.stop*1:-1;
761
801
  let {field:id, val:vid} = getFirstField(filter);
762
802
 
763
- let ltdml = ['sinter','sunionstore','scard','hmget','hfind','upsert','set','get','scan','incrby','sadd','srem','smembers','hset','hgetall','del','incrbyfloat','expireat','setnx','hsetnx','hmset','expire','lrange','keys'];
803
+ let ltdml = ['sinter','sunionstore','scard','hmget','hfind','upsert','set','get','scan','incrby','sadd','srem','smembers','hset','hgetall','del','incrbyfloat','expireat','setnx','hsetnx','hmset','expire','lrange','keys','dbsize'];
764
804
  for (let x of ltdml){
765
805
  if (utl.ObjectEmpty(json,x)){
766
806
  dml = x; break;
@@ -772,6 +812,9 @@ const api=async(options, dbm, json)=>{
772
812
  let keysArray = json.keys!=null ? json.keys : [];
773
813
  let fieldsArray = json.fields!=null ? json.fields : [];
774
814
  let destination = json.destination!=null ? json.destination : '';
815
+ let cursor = json.cursor!=null ? json.cursor : '0';
816
+ let pattern = json.pattern!=null ? json.pattern : key;
817
+ let scan_count = json.count!=null ? json.count : 100;
775
818
 
776
819
  let r;
777
820
  switch (dml){
@@ -779,7 +822,7 @@ const api=async(options, dbm, json)=>{
779
822
  case 'get': r = await get(options,dbm,key); break;
780
823
  case 'hfind': r = await hfind(options,dbm,key,filter,order,limit); break;
781
824
  case 'upsert': r = await upsert(options,dbm,key,value,id,vid,expire); break;
782
- case 'scan': r = await scan(options,dbm, key); break;
825
+ case 'scan': r = await scan(options,dbm,cursor,pattern,scan_count); break;
783
826
  case 'incrby': r = await incrby(options,dbm,key,value,expire,counter); break;
784
827
  case 'sadd': r = await sadd(options,dbm,key,value,expire); break;
785
828
  case 'srem': r = await srem(options,dbm,key,value); break;
@@ -795,6 +838,7 @@ const api=async(options, dbm, json)=>{
795
838
  case 'expire': r = await expire(options,dbm,key,expire); break;
796
839
  case 'lrange': r = await lrange(options,dbm,key,lstart,lstop); break;
797
840
  case 'keys': r = await keys(options,dbm,key); break;
841
+ case 'dbsize': r = await dbsize(options,dbm); break;
798
842
  case 'sinter': r = await sinter(options,dbm,Array.isArray(key) ? key : [key]); break;
799
843
  case 'hmget': r = await hmget(options,dbm,key,fieldsArray); break;
800
844
  case 'sunionstore': r = await sunionstore(options,dbm,destination,keysArray); break;
@@ -908,5 +952,6 @@ module.exports ={
908
952
  expire,
909
953
  expireat,
910
954
  lrange,
911
- keys
955
+ keys,
956
+ dbsize
912
957
  }
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "name": "bonsaif",
16
16
  "description": "bonsaif is a library to connect to bonsaif apis",
17
- "version": "1.10.31",
17
+ "version": "1.10.33",
18
18
  "main": "index.js",
19
19
  "directories": {
20
20
  "lib": "lib"