pixl-server-storage 3.2.8 → 3.2.9
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 +55 -0
- package/index_types/Number.js +17 -0
- package/indexer.js +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -54,6 +54,7 @@ Here is the table of contents for this current document:
|
|
|
54
54
|
+ [S3 Key Prefix](#s3-key-prefix)
|
|
55
55
|
+ [S3 Key Template](#s3-key-template)
|
|
56
56
|
+ [S3 Cache](#s3-cache)
|
|
57
|
+
+ [S3 Compatible Services](#s3-compatible-services)
|
|
57
58
|
* [Couchbase](#couchbase)
|
|
58
59
|
* [Redis](#redis)
|
|
59
60
|
+ [RedisCluster](#rediscluster)
|
|
@@ -518,6 +519,60 @@ It is recommended that you set the `maxItems` and `maxBytes` high enough to allo
|
|
|
518
519
|
|
|
519
520
|
Note that binary records are **not** cached, as they are generally large. Only JSON records are cached, as they are usually much smaller and used in [Lists](https://github.com/jhuckaby/pixl-server-storage/blob/master/docs/Lists.md), [Hashes](https://github.com/jhuckaby/pixl-server-storage/blob/master/docs/Hashes.md), [Transactions](https://github.com/jhuckaby/pixl-server-storage/blob/master/docs/Transactions.md) and the [Indexer](https://github.com/jhuckaby/pixl-server-storage/blob/master/docs/Indexer.md).
|
|
520
521
|
|
|
522
|
+
### S3 Compatible Services
|
|
523
|
+
|
|
524
|
+
To use an S3 compatible service such as [MinIO](https://github.com/minio/minio), you'll need to add a few extra parameters to the `AWS` section:
|
|
525
|
+
|
|
526
|
+
```js
|
|
527
|
+
{
|
|
528
|
+
"endpoint": "http://minio:9000",
|
|
529
|
+
"endpointPrefix": false,
|
|
530
|
+
"forcePathStyle": true,
|
|
531
|
+
"hostPrefixEnabled": false
|
|
532
|
+
}
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
Replace `minio:9000` with your MinIO hostname or IP address, and port number (9000 is the default).
|
|
536
|
+
|
|
537
|
+
Here is a complete example with the new parameters added:
|
|
538
|
+
|
|
539
|
+
```js
|
|
540
|
+
{
|
|
541
|
+
"Storage": {
|
|
542
|
+
"transactions": true,
|
|
543
|
+
"trans_auto_recover": true,
|
|
544
|
+
|
|
545
|
+
"engine": "S3",
|
|
546
|
+
"AWS": {
|
|
547
|
+
"endpoint": "http://minio:9000",
|
|
548
|
+
"endpointPrefix": false,
|
|
549
|
+
"forcePathStyle": true,
|
|
550
|
+
"hostPrefixEnabled": false,
|
|
551
|
+
"region": "us-west-1",
|
|
552
|
+
"credentials": {
|
|
553
|
+
"accessKeyId": "YOUR_MINIO_ACCESS_KEY",
|
|
554
|
+
"secretAccessKey": "YOUR_MINIO_SECRET_KEY"
|
|
555
|
+
}
|
|
556
|
+
},
|
|
557
|
+
"S3": {
|
|
558
|
+
"connectTimeout": 5000,
|
|
559
|
+
"socketTimeout": 5000,
|
|
560
|
+
"maxAttempts": 50,
|
|
561
|
+
"keyPrefix": "",
|
|
562
|
+
"fileExtensions": true,
|
|
563
|
+
"params": {
|
|
564
|
+
"Bucket": "YOUR_MINIO_BUCKET_ID"
|
|
565
|
+
},
|
|
566
|
+
"cache": {
|
|
567
|
+
"enabled": true,
|
|
568
|
+
"maxItems": 1000,
|
|
569
|
+
"maxBytes": 10485760
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
```
|
|
575
|
+
|
|
521
576
|
## Couchbase
|
|
522
577
|
|
|
523
578
|
Please note that as of this writing (April 2022), pixl-server-storage only supports Couchbase Client v2, so you need to force install version `2.6.12` (see instructions below). Work is underway to support the v3 API, which has many breaking changes.
|
package/index_types/Number.js
CHANGED
|
@@ -83,6 +83,23 @@ module.exports = Class.create({
|
|
|
83
83
|
|
|
84
84
|
filterWords_number: function(value) {
|
|
85
85
|
// filter number queries
|
|
86
|
+
|
|
87
|
+
// support simple date-to-epoch conversion here
|
|
88
|
+
if (value.match(/^(\d{4})\D+(\d{2})\D+(\d{2})$/)) {
|
|
89
|
+
var dargs = Tools.getDateArgs( value + " 00:00:00" );
|
|
90
|
+
value = '' + (dargs.epoch || 0);
|
|
91
|
+
}
|
|
92
|
+
else if (value.match(/^(today)$/)) {
|
|
93
|
+
// normalize "today" to midnight today (server timezone)
|
|
94
|
+
var midnight = Tools.normalizeTime( Tools.timeNow(true), { hour:0, min:0, sec:0 } );
|
|
95
|
+
var dargs = Tools.getDateArgs( midnight );
|
|
96
|
+
value = '' + (dargs.epoch || 0);
|
|
97
|
+
}
|
|
98
|
+
else if (value.match(/^(now)$/)) {
|
|
99
|
+
var dargs = Tools.getDateArgs( Tools.timeNow(true) );
|
|
100
|
+
value = '' + (dargs.epoch || 0);
|
|
101
|
+
}
|
|
102
|
+
|
|
86
103
|
value = value.replace(/\.\d+$/, '').replace(/[^\d\-]+/g, '').replace(/\-/, 'N');
|
|
87
104
|
return value;
|
|
88
105
|
},
|
package/indexer.js
CHANGED
|
@@ -1105,6 +1105,13 @@ module.exports = Class.create({
|
|
|
1105
1105
|
// range between two values (inclusive)
|
|
1106
1106
|
var low = RegExp.$1;
|
|
1107
1107
|
var high = RegExp.$2;
|
|
1108
|
+
|
|
1109
|
+
var lwords = this.getWordList(low, def, config);
|
|
1110
|
+
if (lwords.length) low = lwords[0];
|
|
1111
|
+
|
|
1112
|
+
var hwords = this.getWordList(high, def, config);
|
|
1113
|
+
if (hwords.length) high = hwords[0];
|
|
1114
|
+
|
|
1108
1115
|
crit = {
|
|
1109
1116
|
mode: 'and',
|
|
1110
1117
|
criteria: [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pixl-server-storage",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.9",
|
|
4
4
|
"description": "A key/value/list storage component for the pixl-server framework.",
|
|
5
5
|
"author": "Joseph Huckaby <jhuckaby@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/jhuckaby/pixl-server-storage",
|