From e1d03577dd973c6e651a8d175fbabcf5a8c1fd53 Mon Sep 17 00:00:00 2001 From: Nikita Dezzpil Orlov Date: Wed, 13 Oct 2021 14:55:35 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=9F=D0=BE=D1=82=D0=B5=D1=80=D1=8F?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=8C=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20rfdc=20fix:=20=D0=98=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BE=D0=BF=D0=B5?= =?UTF-8?q?=D1=87=D0=B0=D1=82=D0=BA=D1=83=20number=5F=20fix:=20=D0=A4?= =?UTF-8?q?=D0=B8=D0=BA=D1=81=20=D0=B2=20=D0=BC=D0=BE=D0=BD=D0=B3=D0=B5,?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BB=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BD=D0=B0=D0=B4=D0=BE=20=D1=81=D0=BE=D0=B7?= =?UTF-8?q?=D0=B4=D0=B0=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B4=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D1=83=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B0=20fix:=20=D0=97=D0=B0=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20TypeError=20=D0=BD=D0=B0=20ErrStorage=20?= =?UTF-8?q?=D0=B2=20mongo=20fix:=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20collectionName=20=D0=B2=20=D1=81=D0=B8?= =?UTF-8?q?=D0=B3=D0=BD=D0=B0=D1=82=D1=83=D1=80=D0=B5=20remove?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orm.d.ts | 9 ++++++--- package-lock.json | 10 +++++----- package.json | 4 +++- src/app/data.ts | 5 ++++- src/app/storage.ts | 4 ++-- src/app/storage/mongo.ts | 10 +++++----- src/tests/storage.test.ts | 6 +++--- 7 files changed, 28 insertions(+), 20 deletions(-) diff --git a/orm.d.ts b/orm.d.ts index 15936a8..237be67 100644 --- a/orm.d.ts +++ b/orm.d.ts @@ -1,10 +1,13 @@ /** @public */ export declare abstract class Data { [key: string]: any; + /** + * @deprecated use fromObject() + */ static assign(vo: Data, values: ValuesObject): Data; set(key: string, value: any): void; fromObject(object: ValuesObject): void; - toObject(exclude?: string[]): Record; + toObject(exclude?: string[]): ValuesObject; abstract uniqKey(): string; } @@ -99,13 +102,13 @@ declare abstract class Storage_2 { abstract save(name: string, uniqKey: string, data: Record): Promise; abstract createSession(): StorageSession; abstract count(name: string, query?: Record): Promise; - abstract remove(collectionName: string, uniqKeyName: string, uniqKey: string): Promise; + abstract remove(name: string, uniqKey: string, uniqVal: string | number): Promise; } export { Storage_2 as Storage } /** @public */ export declare interface StorageCursor { - limit(number_: number): StorageCursor; + limit(number: number): StorageCursor; sort(parameters: Record): StorageCursor; skip(offset: number): StorageCursor; toArray(): Promise; diff --git a/package-lock.json b/package-lock.json index f6a1295..3581b39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "ivna-orm", "version": "1.3.2", "license": "ISC", + "dependencies": { + "rfdc": "^1.3.0" + }, "devDependencies": { "@jest/test-sequencer": "^27.2.3", "@microsoft/api-extractor": "^7.18.11", @@ -21,7 +24,6 @@ "jest-teamcity": "^1.10.0", "nanoid": "^3.1.28", "prettier": "^2.4.1", - "rfdc": "^1.3.0", "standard-version": "^9.3.1", "ts-jest": "^27.0.5", "ts-node": "^10.2.1", @@ -5658,8 +5660,7 @@ "node_modules/rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, "node_modules/rimraf": { "version": "3.0.2", @@ -11393,8 +11394,7 @@ "rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, "rimraf": { "version": "3.0.2", diff --git a/package.json b/package.json index e207507..c98fa8f 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "jest-teamcity": "^1.10.0", "nanoid": "^3.1.28", "prettier": "^2.4.1", - "rfdc": "^1.3.0", "standard-version": "^9.3.1", "ts-jest": "^27.0.5", "ts-node": "^10.2.1", @@ -60,5 +59,8 @@ "semi": false, "singleQuote": true, "tabWidth": 4 + }, + "dependencies": { + "rfdc": "^1.3.0" } } diff --git a/src/app/data.ts b/src/app/data.ts index b71196d..008353b 100644 --- a/src/app/data.ts +++ b/src/app/data.ts @@ -7,6 +7,9 @@ export type ValuesObject = Record export abstract class Data { [key: string]: any + /** + * @deprecated use fromObject() + */ static assign(vo: Data, values: ValuesObject): Data { for (const key of Object.getOwnPropertyNames(values)) { vo[key] = values[key] @@ -26,7 +29,7 @@ export abstract class Data { } } - toObject(exclude: string[] = []): Record { + toObject(exclude: string[] = []): ValuesObject { const object = {} as ValuesObject for (const key of Object.getOwnPropertyNames(this)) { if (key.startsWith('__')) { diff --git a/src/app/storage.ts b/src/app/storage.ts index 377b66b..c260e16 100644 --- a/src/app/storage.ts +++ b/src/app/storage.ts @@ -1,6 +1,6 @@ /** @public */ export interface StorageCursor { - limit(number_: number): StorageCursor + limit(number: number): StorageCursor sort(parameters: Record): StorageCursor skip(offset: number): StorageCursor toArray(): Promise @@ -28,7 +28,7 @@ export abstract class Storage { abstract count(name: string, query?: Record): Promise - abstract remove(collectionName: string, uniqKeyName: string, uniqKey: string): Promise + abstract remove(name: string, uniqKey: string, uniqVal: string | number): Promise } /** @public */ diff --git a/src/app/storage/mongo.ts b/src/app/storage/mongo.ts index 44b00d4..36b6ed8 100644 --- a/src/app/storage/mongo.ts +++ b/src/app/storage/mongo.ts @@ -1,5 +1,5 @@ import { ClientSession, MongoClient, TransactionOptions } from 'mongodb' -import { Storage, StorageCursor, StorageSession } from '../storage' +import { ErrStorage, Storage, StorageCursor, StorageSession } from '../storage' import { ErrEntityHasNoUniqKeyValue } from '../entity' /** @public */ @@ -36,8 +36,8 @@ export class MongoStorage extends Storage { async save(collectionName: string, uniqKey: string, data: Record): Promise { await this._connect() const id = data[uniqKey] - const coll = await this._client.db().collection(collectionName) if (id !== null && id !== undefined) { + const coll = await this._client.db().collection(collectionName) const filter = { [uniqKey]: id } const result = await coll.findOneAndReplace(filter, data, { upsert: true }) if (result.lastErrorObject) { @@ -48,7 +48,7 @@ export class MongoStorage extends Storage { return result.lastErrorObject.upserted } - throw new TypeError(`can not save data to ${collectionName} with result ${result}`) + throw new ErrStorage(`can not save data to ${collectionName} with result ${result}`) } else { // Нельзя сохранить сущность без значения уникального ключа // const result = await coll.insertOne(data) @@ -70,8 +70,8 @@ export class MongoStorage extends Storage { return this._client } - async remove(collectionName: string, uniqKeyName: string, uniqKey: string): Promise { - const coll = await this._client.db().collection(collectionName) + async remove(name: string, uniqKeyName: string, uniqKey: string): Promise { + const coll = await this._client.db().collection(name) const result = await coll.deleteOne({ [uniqKeyName]: uniqKey }) return Promise.resolve(result.acknowledged) } diff --git a/src/tests/storage.test.ts b/src/tests/storage.test.ts index c23322c..dbd96e2 100644 --- a/src/tests/storage.test.ts +++ b/src/tests/storage.test.ts @@ -9,8 +9,8 @@ export class MapCursor implements StorageCursor { this._map = map } - limit(number_: number): StorageCursor { - this._limit = number_ + limit(number: number): StorageCursor { + this._limit = number return this } @@ -67,7 +67,7 @@ export class MapStorage extends Storage { return Promise.resolve(0) } - async remove(collectionName: string, uniqKeyName: string, uniqKey: string): Promise { + async remove(name: string, uniqKeyName: string, uniqKey: string): Promise { return Promise.resolve(true) }