proto.io 0.0.172 → 0.0.174

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 (49) hide show
  1. package/dist/adapters/file/database.d.ts +2 -2
  2. package/dist/adapters/file/database.js +2 -2
  3. package/dist/adapters/file/database.mjs +2 -2
  4. package/dist/adapters/file/filesystem.d.ts +2 -2
  5. package/dist/adapters/file/google-cloud-storage.d.ts +2 -2
  6. package/dist/adapters/storage/progres.d.ts +9 -2
  7. package/dist/adapters/storage/progres.js +58 -5
  8. package/dist/adapters/storage/progres.js.map +1 -1
  9. package/dist/adapters/storage/progres.mjs +58 -5
  10. package/dist/adapters/storage/progres.mjs.map +1 -1
  11. package/dist/client.d.ts +3 -3
  12. package/dist/client.js +2 -2
  13. package/dist/client.mjs +3 -3
  14. package/dist/index.d.ts +75 -3
  15. package/dist/index.js +242 -12
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.mjs +243 -13
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/internals/{index-BYbMU-Ao.mjs → index--ifyu-GL.mjs} +139 -1
  20. package/dist/internals/index--ifyu-GL.mjs.map +1 -0
  21. package/dist/internals/{index-B1wqSio6.mjs → index-C3fbOqmn.mjs} +2 -2
  22. package/dist/internals/{index-B1wqSio6.mjs.map → index-C3fbOqmn.mjs.map} +1 -1
  23. package/dist/internals/index-CE5tdYK8.d.ts +1816 -0
  24. package/dist/internals/index-CE5tdYK8.d.ts.map +1 -0
  25. package/dist/internals/{index-K0jhERvZ.d.ts → index-CGX3qcjQ.d.ts} +2 -2
  26. package/dist/internals/index-CGX3qcjQ.d.ts.map +1 -0
  27. package/dist/internals/{index-CVutVPmd.js → index-DXuW8UiB.js} +139 -1
  28. package/dist/internals/index-DXuW8UiB.js.map +1 -0
  29. package/dist/internals/{index-CzfsyXvb.js → index-Dc3V_Bzw.js} +2 -2
  30. package/dist/internals/{index-CzfsyXvb.js.map → index-Dc3V_Bzw.js.map} +1 -1
  31. package/dist/internals/{index-D0hHgn2P.mjs → index-R0gbIGc-.mjs} +289 -2
  32. package/dist/internals/index-R0gbIGc-.mjs.map +1 -0
  33. package/dist/internals/{index-BJP46VGq.js → index-S_gTMQBh.js} +289 -2
  34. package/dist/internals/index-S_gTMQBh.js.map +1 -0
  35. package/dist/internals/{index-DchUjNEf.d.ts → index-uwXdnxqN.d.ts} +2 -2
  36. package/dist/internals/index-uwXdnxqN.d.ts.map +1 -0
  37. package/dist/internals/{random-BCpwYpyw.mjs → random-DPRG8oW6.mjs} +3 -3
  38. package/dist/internals/{random-BCpwYpyw.mjs.map → random-DPRG8oW6.mjs.map} +1 -1
  39. package/dist/internals/{random-Dytum6Nh.js → random-DVOUDDGg.js} +3 -3
  40. package/dist/internals/{random-Dytum6Nh.js.map → random-DVOUDDGg.js.map} +1 -1
  41. package/package.json +1 -1
  42. package/dist/internals/index-BJP46VGq.js.map +0 -1
  43. package/dist/internals/index-BYbMU-Ao.mjs.map +0 -1
  44. package/dist/internals/index-BhWRmBiq.d.ts +0 -726
  45. package/dist/internals/index-BhWRmBiq.d.ts.map +0 -1
  46. package/dist/internals/index-CVutVPmd.js.map +0 -1
  47. package/dist/internals/index-D0hHgn2P.mjs.map +0 -1
  48. package/dist/internals/index-DchUjNEf.d.ts.map +0 -1
  49. package/dist/internals/index-K0jhERvZ.d.ts.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import _ from 'lodash';
2
- import { i as isPointer, a as isRelation, b as isShape, d as decodeUpdateOp, s as shapePaths, e as isPrimitive, T as TObject, f as isVector, _ as _encodeValue, g as _decodeValue, h as dimensionOf, j as _typeof } from '../../internals/index-BYbMU-Ao.mjs';
2
+ import { i as isPointer, a as isRelation, b as isShape, d as decodeUpdateOp, s as shapePaths, e as isPrimitive, T as TObject, f as isVector, _ as _encodeValue, g as _decodeValue, h as dimensionOf, j as _typeof } from '../../internals/index--ifyu-GL.mjs';
3
3
  import { Pool, types } from 'pg';
4
4
  import QueryStream from 'pg-query-stream';
5
5
  import { asyncStream } from '@o2ter/utils-js';
6
6
  import Decimal from 'decimal.js';
7
7
  import { escapeLiteral, escapeIdentifier } from 'pg/lib/utils';
8
- import { a as QueryCoditionalSelector, b as QueryFieldSelector, c as QueryExpressionSelector, d as QueryDistanceExpression, e as QueryCoditionalExpression, f as QueryComparisonExpression, g as QueryNotExpression, h as QueryArrayExpression, i as QueryValueExpression, j as QueryKeyExpression, Q as QuerySelector, F as FieldSelectorExpression } from '../../internals/index-B1wqSio6.mjs';
8
+ import { a as QueryCoditionalSelector, b as QueryFieldSelector, c as QueryExpressionSelector, d as QueryDistanceExpression, e as QueryCoditionalExpression, f as QueryComparisonExpression, g as QueryNotExpression, h as QueryArrayExpression, i as QueryValueExpression, j as QueryKeyExpression, Q as QuerySelector, F as FieldSelectorExpression } from '../../internals/index-C3fbOqmn.mjs';
9
9
  import '@o2ter/crypto-js';
10
- import { r as resolveColumn, a as resolveDataType, g as generateId, Q as QueryValidator } from '../../internals/random-BCpwYpyw.mjs';
10
+ import { r as resolveColumn, a as resolveDataType, g as generateId, Q as QueryValidator } from '../../internals/random-DPRG8oW6.mjs';
11
11
  import { P as PVK } from '../../internals/private-BUpLAMZi.mjs';
12
12
 
13
13
  //
@@ -483,7 +483,7 @@ class QueryCompiler {
483
483
  INSERT INTO ${{ identifier: options.className }}
484
484
  (${_.map(keys, x => sql `${{ identifier: x }}`)})
485
485
  VALUES ${_.map(_values, v => sql `(${_.map(keys, k => sql `${v[k]}`)})`)}
486
- RETURNING 0
486
+ RETURNING _id
487
487
  `;
488
488
  }
489
489
  updateOne(query, update) {
@@ -501,6 +501,17 @@ class QueryCompiler {
501
501
  `;
502
502
  });
503
503
  }
504
+ updateMany(query, update) {
505
+ return this._modifyQuery(query, (fetchName) => {
506
+ return sql `
507
+ UPDATE ${{ identifier: query.className }}
508
+ SET __v = __v + 1, _updated_at = NOW()
509
+ ${!_.isEmpty(update) ? sql `, ${this._encodeUpdateAttrs(query.className, update)}` : sql ``}
510
+ WHERE ${{ identifier: query.className }}._id IN (SELECT ${{ identifier: fetchName }}._id FROM ${{ identifier: fetchName }})
511
+ RETURNING _id
512
+ `;
513
+ });
514
+ }
504
515
  upsertOne(query, update, setOnInsert) {
505
516
  const _insert = _.toPairs({
506
517
  ..._defaultInsertOpts(query),
@@ -534,6 +545,35 @@ class QueryCompiler {
534
545
  `;
535
546
  });
536
547
  }
548
+ upsertMany(query, update, setOnInsert) {
549
+ const _insert = _.toPairs({
550
+ ..._defaultInsertOpts(query),
551
+ ...this._encodeObjectAttrs(query.className, setOnInsert),
552
+ });
553
+ return this._modifyQuery(query, (fetchName) => {
554
+ const updateName = `_update_$${query.className.toLowerCase()}`;
555
+ const insertName = `_insert_$${query.className.toLowerCase()}`;
556
+ return sql `
557
+ , ${{ identifier: updateName }} AS (
558
+ UPDATE ${{ identifier: query.className }}
559
+ SET __v = __v + 1, _updated_at = NOW()
560
+ ${!_.isEmpty(update) ? sql `, ${this._encodeUpdateAttrs(query.className, update)}` : sql ``}
561
+ WHERE ${{ identifier: query.className }}._id IN (SELECT ${{ identifier: fetchName }}._id FROM ${{ identifier: fetchName }})
562
+ RETURNING _id, 0 AS ${{ identifier: 'result' }}
563
+ )
564
+ , ${{ identifier: insertName }} AS (
565
+ INSERT INTO ${{ identifier: query.className }}
566
+ (${_.map(_insert, x => sql `${{ identifier: x[0] }}`)})
567
+ SELECT ${_.map(_insert, x => sql `${x[1]} AS ${{ identifier: x[0] }}`)}
568
+ WHERE NOT EXISTS(SELECT * FROM ${{ identifier: updateName }})
569
+ RETURNING _id, 1 AS ${{ identifier: 'result' }}
570
+ )
571
+ SELECT * FROM ${{ identifier: updateName }}
572
+ UNION
573
+ SELECT * FROM ${{ identifier: insertName }}
574
+ `;
575
+ });
576
+ }
537
577
  deleteOne(query) {
538
578
  return this._modifyQuery({ ...query, limit: 1 }, (fetchName, context) => {
539
579
  const name = `_delete_$${query.className.toLowerCase()}`;
@@ -560,7 +600,7 @@ class QueryCompiler {
560
600
  return this._modifyQuery(query, (fetchName) => sql `
561
601
  DELETE FROM ${{ identifier: query.className }}
562
602
  WHERE ${{ identifier: query.className }}._id IN (SELECT ${{ identifier: fetchName }}._id FROM ${{ identifier: fetchName }})
563
- RETURNING 0
603
+ RETURNING _id
564
604
  `);
565
605
  }
566
606
  }
@@ -754,11 +794,24 @@ class SqlStorage {
754
794
  const updated = _.first(await this.query(compiler.updateOne(query, update)));
755
795
  return _.isNil(updated) ? undefined : this._decodeObject(query.className, updated);
756
796
  }
797
+ async updateMany(query, update) {
798
+ const compiler = this._makeCompiler(true, query.extraFilter);
799
+ const updated = await this.query(compiler.updateMany(query, update));
800
+ return updated.length;
801
+ }
757
802
  async upsertOne(query, update, setOnInsert) {
758
803
  const compiler = this._makeCompiler(true, query.extraFilter);
759
804
  const upserted = _.first(await this.query(compiler.upsertOne(query, update, setOnInsert)));
760
805
  return _.isNil(upserted) ? undefined : this._decodeObject(query.className, upserted);
761
806
  }
807
+ async upsertMany(query, update, setOnInsert) {
808
+ const compiler = this._makeCompiler(true, query.extraFilter);
809
+ const upserted = await this.query(compiler.upsertMany(query, update, setOnInsert));
810
+ return {
811
+ updated: _.filter(upserted, x => x.result === 0).length,
812
+ inserted: _.filter(upserted, x => x.result === 1).length,
813
+ };
814
+ }
762
815
  async deleteOne(query) {
763
816
  const compiler = this._makeCompiler(true, query.extraFilter);
764
817
  const deleted = _.first(await this.query(compiler.deleteOne(query)));