Upgrade mongodb & add distinct operator
This commit is contained in:
parent
613399e928
commit
ebf2c7de77
@ -42,7 +42,7 @@
|
|||||||
"@types/mysql": "^2.15.21",
|
"@types/mysql": "^2.15.21",
|
||||||
"amqp-connection-manager": "^4.1.12",
|
"amqp-connection-manager": "^4.1.12",
|
||||||
"amqplib": "^0.10.3",
|
"amqplib": "^0.10.3",
|
||||||
"mongodb": "^6.3.0",
|
"mongodb": "^6.5.0",
|
||||||
"mysql": "^2.18.1"
|
"mysql": "^2.18.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
@ -124,7 +124,6 @@ class MessageBroker
|
|||||||
|
|
||||||
async init ()
|
async init ()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!this.#load)
|
if (!this.#load)
|
||||||
return this.#logger?.info('Not loading RabbitMQ');
|
return this.#logger?.info('Not loading RabbitMQ');
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { inspect } from 'node:util';
|
import { inspect } from 'node:util';
|
||||||
import { MongoClient, MongoClientOptions, Db, Document, WithId, ObjectId, Filter, IndexSpecification, CreateIndexesOptions, FindOptions, ModifyResult } from 'mongodb';
|
import { MongoClient, MongoClientOptions, Db, Document, WithId, ObjectId, Filter, IndexSpecification, CreateIndexesOptions, FindOptions, ModifyResult, DistinctOptions } from 'mongodb';
|
||||||
import { IServer, ILogger } from './interfaces/index.js';
|
import { IServer, ILogger } from './interfaces/index.js';
|
||||||
|
|
||||||
type Credentials = {
|
type Credentials = {
|
||||||
@ -61,7 +61,6 @@ class MongoDB
|
|||||||
|
|
||||||
constructor (server: IServer, config: MongoOptions)
|
constructor (server: IServer, config: MongoOptions)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!server)
|
if (!server)
|
||||||
throw new Error('Missing reference to server!');
|
throw new Error('Missing reference to server!');
|
||||||
if (!config)
|
if (!config)
|
||||||
@ -108,7 +107,6 @@ class MongoDB
|
|||||||
.on('timeout', () => this.#logger?.warn('MongoDB timed out'))
|
.on('timeout', () => this.#logger?.warn('MongoDB timed out'))
|
||||||
.on('close', () => this.#logger?.info('MongoDB client disconnected'))
|
.on('close', () => this.#logger?.info('MongoDB client disconnected'))
|
||||||
.on('open', () => this.#logger?.info('MongoDB client connected'));
|
.on('open', () => this.#logger?.info('MongoDB client connected'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get database ()
|
get database ()
|
||||||
@ -350,6 +348,24 @@ class MongoDB
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async distinct<T extends Document> (db: string, key: string, filter?: Filter<T>, options: DistinctOptions = {})
|
||||||
|
{
|
||||||
|
if (!this.#db)
|
||||||
|
throw new Error('MongoDB not connected');
|
||||||
|
if (typeof db !== 'string')
|
||||||
|
throw new Error('Expecting collection name for the first argument');
|
||||||
|
if (filter && typeof filter._id === 'string' && filter._id.length === 24)
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore
|
||||||
|
filter._id = new ObjectId(filter._id);
|
||||||
|
|
||||||
|
const endTimer = MongoDB.#queryHistogram?.startTimer({ type: 'distinct' });
|
||||||
|
const result = await this.#db.collection<T>(db).distinct(key, filter, options);
|
||||||
|
if (endTimer)
|
||||||
|
endTimer();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Push data to an array
|
* Push data to an array
|
||||||
*
|
*
|
||||||
|
28
yarn.lock
28
yarn.lock
@ -62,10 +62,10 @@
|
|||||||
resolved "https://registry.corgi.wtf/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
resolved "https://registry.corgi.wtf/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
||||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
||||||
|
|
||||||
"@mongodb-js/saslprep@^1.1.0":
|
"@mongodb-js/saslprep@^1.1.5":
|
||||||
version "1.1.1"
|
version "1.1.5"
|
||||||
resolved "https://registry.corgi.wtf/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz#9a6c2516bc9188672c4d953ec99760ba49970da7"
|
resolved "https://registry.corgi.wtf/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz#0c48a96c8d799e81fae311b7251aa5c1dc7c6e95"
|
||||||
integrity sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==
|
integrity sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==
|
||||||
dependencies:
|
dependencies:
|
||||||
sparse-bitfield "^3.0.3"
|
sparse-bitfield "^3.0.3"
|
||||||
|
|
||||||
@ -315,10 +315,10 @@ braces@^3.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fill-range "^7.0.1"
|
fill-range "^7.0.1"
|
||||||
|
|
||||||
bson@^6.2.0:
|
bson@^6.4.0:
|
||||||
version "6.2.0"
|
version "6.5.0"
|
||||||
resolved "https://registry.corgi.wtf/bson/-/bson-6.2.0.tgz#4b6acafc266ba18eeee111373c2699304a9ba0a3"
|
resolved "https://registry.corgi.wtf/bson/-/bson-6.5.0.tgz#fc4828d065e64e48ea442b1a23099b2e52f7ff0b"
|
||||||
integrity sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==
|
integrity sha512-DXf1BTAS8vKyR90BO4x5v3rKVarmkdkzwOrnYDFdjAY694ILNDkmA3uRh1xXJEl+C1DAh8XCvAQ+Gh3kzubtpg==
|
||||||
|
|
||||||
buffer-more-ints@~1.0.0:
|
buffer-more-ints@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
@ -788,13 +788,13 @@ mongodb-connection-string-url@^3.0.0:
|
|||||||
"@types/whatwg-url" "^11.0.2"
|
"@types/whatwg-url" "^11.0.2"
|
||||||
whatwg-url "^13.0.0"
|
whatwg-url "^13.0.0"
|
||||||
|
|
||||||
mongodb@^6.3.0:
|
mongodb@^6.5.0:
|
||||||
version "6.3.0"
|
version "6.5.0"
|
||||||
resolved "https://registry.corgi.wtf/mongodb/-/mongodb-6.3.0.tgz#ec9993b19f7ed2ea715b903fcac6171c9d1d38ca"
|
resolved "https://registry.corgi.wtf/mongodb/-/mongodb-6.5.0.tgz#3735b4fba085b26ca06f7744e9639bc538e93d87"
|
||||||
integrity sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==
|
integrity sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@mongodb-js/saslprep" "^1.1.0"
|
"@mongodb-js/saslprep" "^1.1.5"
|
||||||
bson "^6.2.0"
|
bson "^6.4.0"
|
||||||
mongodb-connection-string-url "^3.0.0"
|
mongodb-connection-string-url "^3.0.0"
|
||||||
|
|
||||||
ms@2.1.2:
|
ms@2.1.2:
|
||||||
|
Loading…
Reference in New Issue
Block a user