@e22m4u/js-repository 0.1.16 → 0.1.18
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/.husky/pre-commit +1 -0
- package/.mocharc.json +5 -0
- package/README.md +38 -14
- package/build-cjs.js +10 -0
- package/dist/cjs/index.cjs +6716 -0
- package/eslint.config.js +66 -0
- package/package.json +34 -29
- package/src/adapter/adapter.spec.js +1 -1
- package/src/adapter/builtin/memory-adapter.js +1 -0
- package/src/adapter/decorator/data-sanitizing-decorator.spec.js +1 -1
- package/src/adapter/decorator/data-transformation-decorator.spec.js +1 -1
- package/src/adapter/decorator/data-validation-decorator.spec.js +1 -1
- package/src/adapter/decorator/default-values-decorator.spec.js +1 -1
- package/src/adapter/decorator/fields-filtering-decorator.spec.js +1 -1
- package/src/adapter/decorator/inclusion-decorator.spec.js +1 -1
- package/src/adapter/decorator/property-uniqueness-decorator.spec.js +1 -1
- package/src/chai.js +11 -0
- package/src/definition/definition-registry.spec.js +1 -1
- package/src/definition/model/model-definition-utils.spec.js +1 -1
- package/src/definition/model/model-definition-validator.spec.js +1 -1
- package/src/definition/model/properties/properties-definition-validator.spec.js +1 -1
- package/src/utils/get-decorator-target-type.spec.js +3 -0
- package/src/utils/is-deep-equal.js +1 -1
- package/.eslintignore +0 -1
- package/.eslintrc.cjs +0 -51
- package/.mocharc.cjs +0 -7
- package/mocha.setup.js +0 -15
package/.husky/pre-commit
CHANGED
package/.mocharc.json
ADDED
package/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
## @e22m4u/js-repository
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
ES-модуль для работы с базами данных для Node.js
|
|
4
4
|
|
|
5
5
|
- [Установка](#Установка)
|
|
6
|
+
- [Импорт](#Импорт)
|
|
6
7
|
- [Описание](#Описание)
|
|
7
8
|
- [Пример](#Пример)
|
|
8
9
|
- [Схема](#Схема)
|
|
@@ -33,6 +34,22 @@ npm install @e22m4u/js-repository
|
|
|
33
34
|
| `memory` | виртуальная база в памяти процесса (не требует установки) |
|
|
34
35
|
| `mongodb` | MongoDB - система управления NoSQL базами (*[установка](https://www.npmjs.com/package/@e22m4u/js-repository-mongodb-adapter))* |
|
|
35
36
|
|
|
37
|
+
## Импорт
|
|
38
|
+
|
|
39
|
+
Модуль поддерживает ESM и CommonJS стандарты.
|
|
40
|
+
|
|
41
|
+
*ESM*
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
import {Schema} from '@e22m4u/js-repository';
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
*CommonJS*
|
|
48
|
+
|
|
49
|
+
```js
|
|
50
|
+
const {Schema} = require('@e22m4u/js-repository');
|
|
51
|
+
```
|
|
52
|
+
|
|
36
53
|
## Описание
|
|
37
54
|
|
|
38
55
|
Модуль позволяет абстрагироваться от различных интерфейсов баз данных,
|
|
@@ -87,7 +104,7 @@ flowchart TD
|
|
|
87
104
|
|
|
88
105
|
## Пример
|
|
89
106
|
|
|
90
|
-
|
|
107
|
+
Объявление источника данных, модели и добавление нового документа в коллекцию.
|
|
91
108
|
|
|
92
109
|
```js
|
|
93
110
|
import {Schema} from '@e22m4u/js-repository';
|
|
@@ -96,13 +113,13 @@ import {DataType} from '@e22m4u/js-repository';
|
|
|
96
113
|
// создание экземпляра Schema
|
|
97
114
|
const schema = new Schema();
|
|
98
115
|
|
|
99
|
-
//
|
|
116
|
+
// объявление источника "myMemory"
|
|
100
117
|
schema.defineDatasource({
|
|
101
118
|
name: 'myMemory', // название нового источника
|
|
102
119
|
adapter: 'memory', // выбранный адаптер
|
|
103
120
|
});
|
|
104
121
|
|
|
105
|
-
//
|
|
122
|
+
// объявление модели "country"
|
|
106
123
|
schema.defineModel({
|
|
107
124
|
name: 'country', // название новой модели
|
|
108
125
|
datasource: 'myMemory', // выбранный источник
|
|
@@ -180,8 +197,8 @@ const productRep = schema.getRepository('product');
|
|
|
180
197
|
|
|
181
198
|
## Источник данных
|
|
182
199
|
|
|
183
|
-
Источник хранит название выбранного адаптера и его настройки.
|
|
184
|
-
|
|
200
|
+
Источник хранит название выбранного адаптера и его настройки. Определение
|
|
201
|
+
нового источника выполняется методом `defineDatasource` экземпляра схемы.
|
|
185
202
|
|
|
186
203
|
**Параметры**
|
|
187
204
|
|
|
@@ -215,8 +232,8 @@ schema.defineDatasource({
|
|
|
215
232
|
|
|
216
233
|
## Модель
|
|
217
234
|
|
|
218
|
-
Описывает структуру документа коллекции и связи к другим моделям.
|
|
219
|
-
|
|
235
|
+
Описывает структуру документа коллекции и связи к другим моделям. Определение
|
|
236
|
+
новой модели выполняется методом `defineModel` экземпляра схемы.
|
|
220
237
|
|
|
221
238
|
**Параметры**
|
|
222
239
|
|
|
@@ -269,7 +286,7 @@ schema.defineModel({
|
|
|
269
286
|
- `validate: string | array | object` см. [Валидаторы](#Валидаторы)
|
|
270
287
|
- `unique: boolean | string` проверять значение на уникальность
|
|
271
288
|
|
|
272
|
-
|
|
289
|
+
**Параметр `unique`**
|
|
273
290
|
|
|
274
291
|
Если значением параметра `unique` является `true` или `'strict'`, то выполняется
|
|
275
292
|
строгая проверка на уникальность. В этом режиме [пустые значения](#Пустые-значения)
|
|
@@ -285,6 +302,13 @@ schema.defineModel({
|
|
|
285
302
|
- `unique: 'sparse'` исключить из проверки [пустые значения](#Пустые-значения)
|
|
286
303
|
- `unique: false | 'nonUnique'` не проверять на уникальность (по умолчанию)
|
|
287
304
|
|
|
305
|
+
В качестве значений параметра `unique` можно использовать предопределенные
|
|
306
|
+
константы как эквивалент строковых значений `strict`, `sparse` и `nonUnique`.
|
|
307
|
+
|
|
308
|
+
- `PropertyUniqueness.STRICT`
|
|
309
|
+
- `PropertyUniqueness.SPARSE`
|
|
310
|
+
- `PropertyUniqueness.NON_UNIQUE`
|
|
311
|
+
|
|
288
312
|
**Примеры**
|
|
289
313
|
|
|
290
314
|
Краткое определение свойств модели.
|
|
@@ -376,12 +400,12 @@ schema.defineModel({
|
|
|
376
400
|
|
|
377
401
|
Валидатором является функция, в которую передается значение соответствующего
|
|
378
402
|
поля перед записью в базу. Если во время проверки функция возвращает `false`,
|
|
379
|
-
то выбрасывается стандартная ошибка.
|
|
380
|
-
|
|
403
|
+
то выбрасывается стандартная ошибка. Подмена стандартной ошибки возможна
|
|
404
|
+
с помощью выброса пользовательской ошибки непосредственно внутри функции.
|
|
381
405
|
|
|
382
|
-
Регистрация пользовательского валидатора
|
|
383
|
-
сервиса `PropertyValidatorRegistry`, который принимает название
|
|
384
|
-
и
|
|
406
|
+
Регистрация пользовательского валидатора выполняется методом `addValidator`
|
|
407
|
+
сервиса `PropertyValidatorRegistry`, который принимает новое название
|
|
408
|
+
и функцию для проверки значения.
|
|
385
409
|
|
|
386
410
|
**Пример**
|
|
387
411
|
|