proto.io 0.0.172 → 0.0.173
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/dist/adapters/file/database.d.ts +2 -2
- package/dist/adapters/file/filesystem.d.ts +2 -2
- package/dist/adapters/file/google-cloud-storage.d.ts +2 -2
- package/dist/adapters/storage/progres.d.ts +8 -1
- package/dist/adapters/storage/progres.js +55 -2
- package/dist/adapters/storage/progres.js.map +1 -1
- package/dist/adapters/storage/progres.mjs +55 -2
- package/dist/adapters/storage/progres.mjs.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.js +1 -1
- package/dist/client.mjs +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +108 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +109 -4
- package/dist/index.mjs.map +1 -1
- package/dist/internals/{index-K0jhERvZ.d.ts → index-BJnQhKf3.d.ts} +2 -2
- package/dist/internals/index-BJnQhKf3.d.ts.map +1 -0
- package/dist/internals/{index-D0hHgn2P.mjs → index-BZNPlw1L.mjs} +20 -1
- package/dist/internals/index-BZNPlw1L.mjs.map +1 -0
- package/dist/internals/{index-BJP46VGq.js → index-CIecB6mS.js} +20 -1
- package/dist/internals/index-CIecB6mS.js.map +1 -0
- package/dist/internals/{index-DchUjNEf.d.ts → index-Cpv1DoEI.d.ts} +2 -2
- package/dist/internals/index-Cpv1DoEI.d.ts.map +1 -0
- package/dist/internals/{index-BhWRmBiq.d.ts → index-lX-M76Tn.d.ts} +11 -1
- package/dist/internals/index-lX-M76Tn.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/internals/index-BJP46VGq.js.map +0 -1
- package/dist/internals/index-BhWRmBiq.d.ts.map +0 -1
- package/dist/internals/index-D0hHgn2P.mjs.map +0 -1
- package/dist/internals/index-DchUjNEf.d.ts.map +0 -1
- package/dist/internals/index-K0jhERvZ.d.ts.map +0 -1
|
@@ -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
|
|
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
|
|
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)));
|