From 93ebcce50d3d820c57b35f9f0ab5cfff12f4d757 Mon Sep 17 00:00:00 2001 From: Andrey Sobolev Date: Wed, 24 Aug 2022 17:46:15 +0700 Subject: [PATCH] Fix mongoDB lookup (#2257) Signed-off-by: Andrey Sobolev --- .github/workflows/main.yml | 2 +- .../dev-storage/avatar_2021-11-09-17-00.json | 10 --- .../prod/ping-log_2021-08-14-09-13.json | 10 --- common/config/rush/pnpm-lock.yaml | 62 +++++++++---------- dev/tool/package.json | 2 +- dev/tool/src/telegram.ts | 4 +- .../src/components/StringPresenter.svelte | 2 +- pods/account/package.json | 2 +- pods/backup/package.json | 2 +- server/account/package.json | 2 +- server/mongo/package.json | 2 +- server/mongo/src/storage.ts | 26 ++++---- server/tool/package.json | 2 +- server/tool/src/upgrade.ts | 2 +- 14 files changed, 54 insertions(+), 76 deletions(-) delete mode 100644 common/changes/@anticrm/dev-storage/avatar_2021-11-09-17-00.json delete mode 100644 common/changes/prod/ping-log_2021-08-14-09-13.json diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f428303682..34db565b93 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -196,7 +196,7 @@ jobs: - name: Start MongoDB uses: supercharge/mongodb-github-action@1.7.0 with: - mongodb-version: 4.4 + mongodb-version: 5.0 - name: Testing... uses: paambaati/codeclimate-action@v3.0.0 diff --git a/common/changes/@anticrm/dev-storage/avatar_2021-11-09-17-00.json b/common/changes/@anticrm/dev-storage/avatar_2021-11-09-17-00.json deleted file mode 100644 index 3075a77de9..0000000000 --- a/common/changes/@anticrm/dev-storage/avatar_2021-11-09-17-00.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@anticrm/dev-storage", - "comment": "", - "type": "none" - } - ], - "packageName": "@anticrm/dev-storage" -} \ No newline at end of file diff --git a/common/changes/prod/ping-log_2021-08-14-09-13.json b/common/changes/prod/ping-log_2021-08-14-09-13.json deleted file mode 100644 index f9451f4410..0000000000 --- a/common/changes/prod/ping-log_2021-08-14-09-13.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "prod", - "comment": "", - "type": "none" - } - ], - "packageName": "prod" -} \ No newline at end of file diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 9f3b4e18c1..f6d2386b6d 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -270,7 +270,7 @@ specifiers: mime-types: ~2.1.34 mini-css-extract-plugin: ^2.2.0 minio: ^7.0.26 - mongodb: ^4.1.1 + mongodb: ^4.9.0 pdfkit: ~0.13.0 postcss: ^8.3.4 postcss-load-config: ^3.1.0 @@ -571,7 +571,7 @@ dependencies: mime-types: 2.1.35 mini-css-extract-plugin: 2.6.1_webpack@5.73.0 minio: 7.0.28 - mongodb: 4.7.0 + mongodb: 4.9.0 pdfkit: 0.13.0 postcss: 8.4.14 postcss-load-config: 3.1.4_postcss@8.4.14+ts-node@10.8.1 @@ -3149,8 +3149,8 @@ packages: node-int64: 0.4.0 dev: false - /bson/4.6.4: - resolution: {integrity: sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==} + /bson/4.7.0: + resolution: {integrity: sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==} engines: {node: '>=6.9.0'} dependencies: buffer: 5.7.1 @@ -3840,8 +3840,8 @@ packages: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false - /denque/2.0.1: - resolution: {integrity: sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==} + /denque/2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} dev: false @@ -5452,8 +5452,8 @@ packages: tslib: 2.4.0 dev: false - /ip/1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + /ip/2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: false /ipaddr.js/1.9.1: @@ -6809,21 +6809,21 @@ packages: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} dev: false - /mongodb-connection-string-url/2.5.2: - resolution: {integrity: sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==} + /mongodb-connection-string-url/2.5.3: + resolution: {integrity: sha512-f+/WsED+xF4B74l3k9V/XkTVj5/fxFH2o5ToKXd8Iyi5UhM+sO9u0Ape17Mvl/GkZaFtM0HQnzAG5OTmhKw+tQ==} dependencies: '@types/whatwg-url': 8.2.2 whatwg-url: 11.0.0 dev: false - /mongodb/4.7.0: - resolution: {integrity: sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==} + /mongodb/4.9.0: + resolution: {integrity: sha512-tJJEFJz7OQTQPZeVHZJIeSOjMRqc5eSyXTt86vSQENEErpkiG7279tM/GT5AVZ7TgXNh9HQxoa2ZkbrANz5GQw==} engines: {node: '>=12.9.0'} dependencies: - bson: 4.6.4 - denque: 2.0.1 - mongodb-connection-string-url: 2.5.2 - socks: 2.6.2 + bson: 4.7.0 + denque: 2.1.0 + mongodb-connection-string-url: 2.5.3 + socks: 2.7.0 optionalDependencies: saslprep: 1.0.3 dev: false @@ -8261,11 +8261,11 @@ packages: websocket-driver: 0.7.4 dev: false - /socks/2.6.2: - resolution: {integrity: sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==} + /socks/2.7.0: + resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} dependencies: - ip: 1.1.8 + ip: 2.0.0 smart-buffer: 4.2.0 dev: false @@ -9557,7 +9557,7 @@ packages: dev: false file:projects/account.tgz: - resolution: {integrity: sha512-DTGUi3jN9TvrTTEE9tys0cPWiBdE61Qoz4TEPPsx6GswWTqA74dJoHp/hqlGoMYhyKTu5WEn0rUOV7tQ4TD9xQ==, tarball: file:projects/account.tgz} + resolution: {integrity: sha512-8KbplLD66ruX6hHCIkK0TahwnfNsU/X811dYlRjl+d/Daa/j4azBJIRQV1mbrZMp/dIbqaZQE5Ne0bbw5obtIg==, tarball: file:projects/account.tgz} name: '@rush-temp/account' version: 0.0.0 dependencies: @@ -9573,7 +9573,7 @@ packages: eslint-plugin-node: 11.1.0_eslint@8.19.0 eslint-plugin-promise: 6.0.0_eslint@8.19.0 minio: 7.0.28 - mongodb: 4.7.0 + mongodb: 4.9.0 prettier: 2.7.1 typescript: 4.7.4 ws: 8.8.0 @@ -12101,7 +12101,7 @@ packages: dev: false file:projects/mongo.tgz: - resolution: {integrity: sha512-Y+ZKnxpmqKiP8jvMidkwkwZCO6b394Mvek8NXO5UlvPyhWEWzhWHmhngHzuGldD85mYKtBUu3gzHfnh8xktITg==, tarball: file:projects/mongo.tgz} + resolution: {integrity: sha512-n9Zcx2tHE4bntEcfP6N5sFNJcnNtd7RHeglztOkt+TwH+dB1hlfOIAU6PmFlHEAHfq6J0mk5ta/4dyBFg3FjrQ==, tarball: file:projects/mongo.tgz} name: '@rush-temp/mongo' version: 0.0.0 dependencies: @@ -12114,7 +12114,7 @@ packages: eslint-plugin-import: 2.26.0_b991b8cc37fbaea14375bc1442f912c5 eslint-plugin-node: 11.1.0_eslint@8.19.0 eslint-plugin-promise: 6.0.0_eslint@8.19.0 - mongodb: 4.7.0 + mongodb: 4.9.0 prettier: 2.7.1 typescript: 4.7.4 transitivePeerDependencies: @@ -12310,7 +12310,7 @@ packages: dev: false file:projects/pod-account.tgz: - resolution: {integrity: sha512-Ibd59uVS5ksj9E8n97rMjPys+WfGrMLmQOygEMLeJV6SvZBDr0clK+ARAuVS6iqGvhvLdptph4Qru8h42JdsBg==, tarball: file:projects/pod-account.tgz} + resolution: {integrity: sha512-+8/IjgDxbTJaxQjVdu3IZNGLPdAC7sacfazFkbAL8v1err7Prs8a165JiAaXqvB2C9uLAnx3hL3RP6gRoG2OQA==, tarball: file:projects/pod-account.tgz} name: '@rush-temp/pod-account' version: 0.0.0 dependencies: @@ -12334,7 +12334,7 @@ packages: koa: 2.13.4 koa-bodyparser: 4.3.0 koa-router: 10.1.1 - mongodb: 4.7.0 + mongodb: 4.9.0 prettier: 2.7.1 ts-node: 10.8.1_eff44b0165567fe5f2c2cc6c8fd30ef7 typescript: 4.7.4 @@ -12347,7 +12347,7 @@ packages: dev: false file:projects/pod-backup.tgz: - resolution: {integrity: sha512-HZ7qmm0ugd//Ac/m7ObjOa9EgnCU4R11GmaNp7wxnFEwJjnQZnFc8H1atViGXsVOiJ/7KqF+8sAtzUhjAeI6kQ==, tarball: file:projects/pod-backup.tgz} + resolution: {integrity: sha512-xNyM6G2tqNduzHK/7Js4iXoYvfaTpYCLGuyCl7lcwAAopITatQLp91uDPKhj4NxLlH9Ztef/MqgkCU78XSp7XQ==, tarball: file:projects/pod-backup.tgz} name: '@rush-temp/pod-backup' version: 0.0.0 dependencies: @@ -12367,7 +12367,7 @@ packages: eslint-plugin-promise: 6.0.0_eslint@8.19.0 got: 11.8.5 minio: 7.0.28 - mongodb: 4.7.0 + mongodb: 4.9.0 prettier: 2.7.1 ts-node: 10.8.1_eff44b0165567fe5f2c2cc6c8fd30ef7 typescript: 4.7.4 @@ -13374,7 +13374,7 @@ packages: dev: false file:projects/server-tool.tgz: - resolution: {integrity: sha512-12Y6MCOs/4IC51MmAzl668InIWtRC8Zx5CE2R5u8RAr0snUQbxXh18TImJxADMrNW+m6W+wTBrjEScQX0GCszQ==, tarball: file:projects/server-tool.tgz} + resolution: {integrity: sha512-fslOzZIEbRO5bGBQgMCPg9o7lKgHbBxtBq+tLj5vuFDIzuZGigGk8IlJ9Z9IdiH9wXALC7eFW7abw+u8fU77oA==, tarball: file:projects/server-tool.tgz} name: '@rush-temp/server-tool' version: 0.0.0 dependencies: @@ -13390,7 +13390,7 @@ packages: eslint-plugin-node: 11.1.0_eslint@8.19.0 eslint-plugin-promise: 6.0.0_eslint@8.19.0 minio: 7.0.28 - mongodb: 4.7.0 + mongodb: 4.9.0 prettier: 2.7.1 typescript: 4.7.4 ws: 8.8.0 @@ -14032,7 +14032,7 @@ packages: dev: false file:projects/tool.tgz: - resolution: {integrity: sha512-7BKMRQ8UZ8cgJGDXvMGNoAdjUmEAyMx9GVBmBo3gmW56eLhxamaBqdwkunRIemCR77MJ8JJj+qhgWAzpRXpoRg==, tarball: file:projects/tool.tgz} + resolution: {integrity: sha512-F7ozoOP7Rjk0WSp5vnw23R1AuP/FMZw+LNl0SiKIzMu3zKvA179Y3A65d7FKpMQSMrA2RCGRjcZszWfSbXDHPA==, tarball: file:projects/tool.tgz} name: '@rush-temp/tool' version: 0.0.0 dependencies: @@ -14063,7 +14063,7 @@ packages: libphonenumber-js: 1.10.7 mime-types: 2.1.35 minio: 7.0.28 - mongodb: 4.7.0 + mongodb: 4.9.0 node-html-parser: 5.3.3 prettier: 2.7.1 ts-node: 10.8.1_eff44b0165567fe5f2c2cc6c8fd30ef7 diff --git a/dev/tool/package.json b/dev/tool/package.json index b08e152896..81afbf1be3 100644 --- a/dev/tool/package.json +++ b/dev/tool/package.json @@ -44,7 +44,7 @@ "@types/email-addresses": "^3.0.0" }, "dependencies": { - "mongodb": "^4.1.1", + "mongodb": "^4.9.0", "commander": "^8.1.0", "@anticrm/account": "~0.6.0", "@anticrm/core": "~0.6.16", diff --git a/dev/tool/src/telegram.ts b/dev/tool/src/telegram.ts index c7491da144..28086b7d7e 100644 --- a/dev/tool/src/telegram.ts +++ b/dev/tool/src/telegram.ts @@ -20,7 +20,7 @@ import contact, { DOMAIN_CHANNEL } from '@anticrm/model-contact' import { DOMAIN_TELEGRAM } from '@anticrm/model-telegram' import telegram, { SharedTelegramMessage, SharedTelegramMessages } from '@anticrm/telegram' import { Client } from 'minio' -import { MongoClient } from 'mongodb' +import { Document, MongoClient, UpdateFilter } from 'mongodb' const LastMessages = 'last-msgs' @@ -84,7 +84,7 @@ export async function clearTelegramHistory ( $set: { items: 0 } - } + } as unknown as UpdateFilter ), workspaceDB.collection(DOMAIN_ATTACHMENT).deleteMany({ attachedToClass: telegram.class.Message diff --git a/plugins/view-resources/src/components/StringPresenter.svelte b/plugins/view-resources/src/components/StringPresenter.svelte index b6539cad63..3dcc732f90 100644 --- a/plugins/view-resources/src/components/StringPresenter.svelte +++ b/plugins/view-resources/src/components/StringPresenter.svelte @@ -17,4 +17,4 @@ export let value: string -{value} +{value} diff --git a/pods/account/package.json b/pods/account/package.json index f2784b74d9..548ceeb99b 100644 --- a/pods/account/package.json +++ b/pods/account/package.json @@ -42,7 +42,7 @@ "dependencies": { "@anticrm/account": "~0.6.0", "@anticrm/platform": "~0.6.6", - "mongodb": "^4.1.1", + "mongodb": "^4.9.0", "koa": "^2.13.1", "koa-router": "^10.1.1", "koa-bodyparser": "^4.3.0", diff --git a/pods/backup/package.json b/pods/backup/package.json index d8c333276b..86f9db6ee2 100644 --- a/pods/backup/package.json +++ b/pods/backup/package.json @@ -38,7 +38,7 @@ }, "dependencies": { "@anticrm/platform": "~0.6.6", - "mongodb": "^4.1.1", + "mongodb": "^4.9.0", "@anticrm/server-tool": "~0.6.0", "@anticrm/server-token": "~0.6.0", "@anticrm/client": "~0.6.2", diff --git a/server/account/package.json b/server/account/package.json index 3198330d9c..e49a9714f1 100644 --- a/server/account/package.json +++ b/server/account/package.json @@ -28,7 +28,7 @@ "@types/ws": "^8.2.1" }, "dependencies": { - "mongodb": "^4.1.1", + "mongodb": "^4.9.0", "@anticrm/platform": "~0.6.6", "minio": "^7.0.26", "@anticrm/core": "~0.6.16", diff --git a/server/mongo/package.json b/server/mongo/package.json index 6c46ecfb01..2efe777f80 100644 --- a/server/mongo/package.json +++ b/server/mongo/package.json @@ -30,6 +30,6 @@ "@anticrm/core": "~0.6.16", "@anticrm/platform": "~0.6.6", "@anticrm/server-core": "~0.6.1", - "mongodb": "^4.1.1" + "mongodb": "^4.9.0" } } diff --git a/server/mongo/src/storage.ts b/server/mongo/src/storage.ts index 36409211dd..caf20c425d 100644 --- a/server/mongo/src/storage.ts +++ b/server/mongo/src/storage.ts @@ -45,7 +45,7 @@ import core, { WithLookup } from '@anticrm/core' import type { DbAdapter, TxAdapter } from '@anticrm/server-core' -import { Collection, Db, Document, Filter, MongoClient, Sort } from 'mongodb' +import { Collection, Db, Document, Filter, MongoClient, Sort, UpdateFilter } from 'mongodb' import { createHash } from 'node:crypto' import { getMongoClient } from './utils' @@ -200,14 +200,12 @@ abstract class MongoAdapterBase extends TxProcessor { const asVal = as.split('.').join('') + '_lookup' const step: LookupStep = { from: domain, - // localField: fullKey, - // foreignField: attr, - let: { docId: '$' + fullKey }, + localField: fullKey, + foreignField: attr, pipeline: [ { $match: { - _class: { $in: desc }, - $expr: { $eq: ['$$docId', '$' + attr] } + _class: { $in: desc } } } ], @@ -661,7 +659,7 @@ class MongoAdapter extends MongoAdapterBase { modifiedBy: tx.modifiedBy, modifiedOn: tx.modifiedOn } - }, + } as unknown as UpdateFilter, { returnDocument: 'after' } ) return { object: result.value } @@ -680,13 +678,13 @@ class MongoAdapter extends MongoAdapterBase { } } else { if (tx.retrieve === true) { - const result = await this.db - .collection(domain) - .findOneAndUpdate( - { _id: tx.objectId }, - { $set: { ...tx.operations, modifiedBy: tx.modifiedBy, modifiedOn: tx.modifiedOn } }, - { returnDocument: 'after' } - ) + const result = await this.db.collection(domain).findOneAndUpdate( + { _id: tx.objectId }, + { + $set: { ...tx.operations, modifiedBy: tx.modifiedBy, modifiedOn: tx.modifiedOn } + } as unknown as UpdateFilter, + { returnDocument: 'after' } + ) return { object: result.value } } else { return await this.db diff --git a/server/tool/package.json b/server/tool/package.json index 709fb61e09..ac5838483e 100644 --- a/server/tool/package.json +++ b/server/tool/package.json @@ -28,7 +28,7 @@ "@types/ws": "^8.2.1" }, "dependencies": { - "mongodb": "^4.1.1", + "mongodb": "^4.9.0", "@anticrm/platform": "~0.6.6", "@anticrm/model-all": "~0.6.0", "minio": "^7.0.26", diff --git a/server/tool/src/upgrade.ts b/server/tool/src/upgrade.ts index 722592af57..8b4f035b6e 100644 --- a/server/tool/src/upgrade.ts +++ b/server/tool/src/upgrade.ts @@ -58,7 +58,7 @@ export class MigrateClientImpl implements MigrationClient { if (isOperator(operations)) { const result = await this.db .collection(domain) - .updateMany(this.translateQuery(query), { ...operations } as unknown as UpdateFilter) + .updateMany(this.translateQuery(query), { ...operations } as unknown as UpdateFilter) return { matched: result.matchedCount, updated: result.modifiedCount } } else {