@e22m4u/js-repository 0.8.3 → 0.8.4

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/README.md CHANGED
@@ -16,7 +16,6 @@
16
16
  - [Модель](#модель)
17
17
  - [Свойства](#свойства)
18
18
  - [Пустые значения](#пустые-значения)
19
- - [Переопределение пустых значений](#переопределение-пустых-значений)
20
19
  - [Репозиторий](#репозиторий)
21
20
  - [create](#repositorycreate)
22
21
  - [replaceById](#repositoryreplacebyid)
@@ -88,9 +87,9 @@ const {DatabaseSchema} = require('@e22m4u/js-repository');
88
87
  согласно определению модели, и встраивать связанные данные в результат
89
88
  выборки.
90
89
 
91
- - *Источник данных* - определяет способ подключения к базе
92
- - *Модель* - описывает структуру документа и связи к другим моделям
93
- - *Репозиторий* - выполняет операции чтения и записи документов модели
90
+ - *Источник данных* - определяет способ подключения к базе;
91
+ - *Модель* - описывает структуру документа и связи к другим моделям;
92
+ - *Репозиторий* - выполняет операции чтения и записи документов модели;
94
93
 
95
94
  ```mermaid
96
95
  flowchart TD
@@ -261,9 +260,9 @@ console.log(cityWithCountry);
261
260
 
262
261
  **Методы**
263
262
 
264
- - `defineDatasource(datasourceDef: object): this` - добавить источник
265
- - `defineModel(modelDef: object): this` - добавить модель
266
- - `getRepository(modelName: string): Repository` - получить репозиторий
263
+ - `defineDatasource(datasourceDef: object): this` - добавить источник;
264
+ - `defineModel(modelDef: object): this` - добавить модель;
265
+ - `getRepository(modelName: string): Repository` - получить репозиторий;
267
266
 
268
267
  **Примеры**
269
268
 
@@ -311,9 +310,9 @@ const productRep = dbs.getRepository('product');
311
310
 
312
311
  **Параметры**
313
312
 
314
- - `name: string` уникальное название
315
- - `adapter: string` выбранный адаптер
316
- - параметры адаптера (если имеются)
313
+ - `name: string` уникальное название;
314
+ - `adapter: string` выбранный адаптер;
315
+ - параметры адаптера (если имеются);
317
316
 
318
317
  **Примеры**
319
318
 
@@ -346,12 +345,12 @@ dbs.defineDatasource({
346
345
 
347
346
  **Параметры**
348
347
 
349
- - `name: string` название модели (обязательно)
350
- - `base: string` название наследуемой модели
351
- - `tableName: string` название коллекции в базе
352
- - `datasource: string` выбранный источник данных
353
- - `properties: object` определения свойств (см. [Свойства](#Свойства))
354
- - `relations: object` определения связей (см. [Связи](#Связи))
348
+ - `name: string` название модели (обязательно);
349
+ - `base: string` название наследуемой модели;
350
+ - `tableName: string` название коллекции в базе;
351
+ - `datasource: string` выбранный источник данных;
352
+ - `properties: object` определения свойств (см. [Свойства](#Свойства));
353
+ - `relations: object` определения связей (см. [Связи](#Связи));
355
354
 
356
355
  **Примеры**
357
356
 
@@ -375,47 +374,46 @@ dbs.defineModel({
375
374
 
376
375
  **Тип данных**
377
376
 
378
- - `DataType.ANY` разрешено любое значение
379
- - `DataType.STRING` только значение типа `string`
380
- - `DataType.NUMBER` только значение типа `number`
381
- - `DataType.BOOLEAN` только значение типа `boolean`
382
- - `DataType.ARRAY` только значение типа `array`
383
- - `DataType.OBJECT` только значение типа `object`
377
+ - `DataType.ANY` разрешено любое значение;
378
+ - `DataType.STRING` только значение типа `string`;
379
+ - `DataType.NUMBER` только значение типа `number`;
380
+ - `DataType.BOOLEAN` только значение типа `boolean`;
381
+ - `DataType.ARRAY` только значение типа `array`;
382
+ - `DataType.OBJECT` только значение типа `object`;
384
383
 
385
384
  **Параметры**
386
385
 
387
- - `type: string` тип допустимого значения (обязательно)
388
- - `itemType: string` тип элемента массива (для `type: 'array'`)
389
- - `model: string` модель объекта (для `type: 'object'`)
390
- - `primaryKey: boolean` объявить свойство первичным ключом
391
- - `columnName: string` переопределение названия колонки
392
- - `columnType: string` тип колонки (определяется адаптером)
393
- - `required: boolean` объявить свойство обязательным
394
- - `default: any` значение по умолчанию
395
- - `unique: boolean | string` проверять значение на уникальность
386
+ - `type: string` тип допустимого значения (обязательно);
387
+ - `itemType: string` тип элемента массива (для `type: 'array'`);
388
+ - `model: string` модель объекта (для `type: 'object'`);
389
+ - `primaryKey: boolean` объявить свойство первичным ключом;
390
+ - `columnName: string` переопределение названия колонки;
391
+ - `columnType: string` тип колонки (определяется адаптером);
392
+ - `required: boolean` объявить свойство обязательным;
393
+ - `default: any` значение по умолчанию;
394
+ - `unique: boolean | string` проверять значение на уникальность;
396
395
 
397
396
  **Параметр `unique`**
398
397
 
399
- Если значением параметра `unique` является `true` или `'strict'`, то выполняется
400
- строгая проверка на уникальность. В этом режиме [пустые значения](#Пустые-значения)
401
- так же подлежат проверке, где `null` и `undefined` также считаются значениями,
402
- которые должны быть уникальными.
398
+ Если значением параметра `unique` является `true` или `"strict"`, то выполняется
399
+ строгая проверка на уникальность. В этом режиме любое значение данного свойства
400
+ не может быть представлено более одного раза.
403
401
 
404
- Режим `'sparse'` проверяет только значения с полезной нагрузкой, исключая
405
- [пустые значения](#Пустые-значения), список которых отличается в зависимости
406
- от типа свойства. Например, для типа `string` пустым значением будет `undefined`,
407
- `null` и `''` (пустая строка).
402
+ Режим `"sparse"` проверяет только значения с полезной нагрузкой, исключая
403
+ [пустые значения](#пустые-значения), список которых отличается в зависимости
404
+ от типа свойства. Например, для типа `string` пустым значением будет
405
+ `undefined`, `null` и `""` (пустая строка).
408
406
 
409
- - `unique: true | 'strict'` строгая проверка на уникальность
410
- - `unique: 'sparse'` исключить из проверки [пустые значения](#Пустые-значения)
411
- - `unique: false | 'nonUnique'` не проверять на уникальность (по умолчанию)
407
+ - `unique: true | 'strict'` строгая проверка на уникальность;
408
+ - `unique: 'sparse'` исключить из проверки [пустые значения](#пустые-значения);
409
+ - `unique: false | 'nonUnique'` не проверять на уникальность (по умолчанию);
412
410
 
413
411
  В качестве значений параметра `unique` можно использовать предопределенные
414
412
  константы как эквивалент строковых значений `strict`, `sparse` и `nonUnique`.
415
413
 
416
- - `PropertyUniqueness.STRICT`
417
- - `PropertyUniqueness.SPARSE`
418
- - `PropertyUniqueness.NON_UNIQUE`
414
+ - `PropertyUniqueness.STRICT`;
415
+ - `PropertyUniqueness.SPARSE`;
416
+ - `PropertyUniqueness.NON_UNIQUE`;
419
417
 
420
418
  **Примеры**
421
419
 
@@ -483,70 +481,14 @@ dbs.defineModel({
483
481
  наоборот допускает дублирование пустых значений уникального свойства,
484
482
  поскольку они не участвуют в проверке.
485
483
 
486
- | константа | тип | пустые значения |
487
- |--------------------|-------------|------------------------------|
488
- | `DataType.ANY` | `"any"` | *пустые значения всех типов* |
489
- | `DataType.STRING` | `"string"` | `undefined`, `null`, `""` |
490
- | `DataType.NUMBER` | `"number"` | `undefined`, `null`, `0` |
491
- | `DataType.BOOLEAN` | `"boolean"` | `undefined`, `null` |
492
- | `DataType.ARRAY` | `"array"` | `undefined`, `null`, `[]` |
493
- | `DataType.OBJECT` | `"object"` | `undefined`, `null`, `{}` |
494
-
495
- ### Переопределение пустых значений
496
-
497
- Набор пустых значений для любого типа данных можно переопределить. Управление
498
- этими наборами осуществляется через специальный сервис, который предоставляет
499
- модуль
500
- [@e22m4u/js-empty-values](https://www.npmjs.com/package/@e22m4u/js-empty-values)
501
- (не требует установки).
502
-
503
- **EmptyValuesService**
504
-
505
- Для переопределения пустых значений необходимо получить экземпляр класса
506
- `EmptyValuesService` из контейнера схемы и вызвать метод, который принимает
507
- тип данных и массив новых значений.
508
-
509
- Интерфейс:
510
-
511
- ```ts
512
- class EmptyValuesService {
513
- /**
514
- * Установить пустые значения
515
- * для определенного типа данных.
516
- *
517
- * @param dataType Тип данных.
518
- * @param emptyValues Массив новых пустых значений.
519
- */
520
- setEmptyValuesOf(
521
- dataType: DataType,
522
- emptyValues: unknown[],
523
- ): this;
524
- }
525
- ```
526
-
527
- **Пример**
528
-
529
- Если свойство с типом `string` является обязательным, то попытка записи пустой
530
- строки приведет к ошибке. Следующий пример демонстрирует, как изменить данное
531
- поведение, оставив в качестве пустых значений только `undefined` и `null`.
532
-
533
- ```js
534
- import {DataType} from '@e22m4u/js-repository';
535
- import {DatabaseSchema} from '@e22m4u/js-repository';
536
- import {EmptyValuesService} from '@e22m4u/js-empty-values';
537
-
538
- const dbs = new DatabaseSchema();
539
-
540
- // получение сервиса для работы с пустыми значениями
541
- const emptyValuesService = dbs.getService(EmptyValuesService);
542
-
543
- // переопределение пустых значений для типа DataType.STRING
544
- emptyValuesService.setEmptyValuesOf(DataType.STRING, [undefined, null]);
545
- ```
546
-
547
- Теперь пустая строка будет успешно проходить проверку для обязательных свойств
548
- с типом `string`, а также не будет заменяться на значение по умолчанию
549
- для необязательных свойств модели.
484
+ | тип свойства | пустые значения |
485
+ |--------------------|----------------------------|
486
+ | `DataType.ANY` | *значения остальных типов* |
487
+ | `DataType.STRING` | `undefined`, `null`, `""` |
488
+ | `DataType.NUMBER` | `undefined`, `null` |
489
+ | `DataType.BOOLEAN` | `undefined`, `null` |
490
+ | `DataType.ARRAY` | `undefined`, `null` |
491
+ | `DataType.OBJECT` | `undefined`, `null` |
550
492
 
551
493
  ## Репозиторий
552
494
 
@@ -570,10 +512,10 @@ emptyValuesService.setEmptyValuesOf(DataType.STRING, [undefined, null]);
570
512
 
571
513
  **Аргументы**
572
514
 
573
- - `id: number|string` идентификатор (первичный ключ)
574
- - `data: object` данные документа (используется при записи)
575
- - `where: object` условия фильтрации (см. [Фильтрация](#Фильтрация))
576
- - `filter: object` параметры выборки (см. [Фильтрация](#Фильтрация))
515
+ - `id: number|string` идентификатор (первичный ключ);
516
+ - `data: object` данные документа (используется при записи);
517
+ - `where: object` условия фильтрации (см. [Фильтрация](#Фильтрация));
518
+ - `filter: object` параметры выборки (см. [Фильтрация](#Фильтрация));
577
519
 
578
520
  **Получение репозитория**
579
521
 
@@ -1083,26 +1025,26 @@ const news = await newsRepository.find({
1083
1025
  операторов сравнения.
1084
1026
 
1085
1027
  - [Поиск по значению](#поиск-по-значению-сокращенная-форма)
1086
- - [`eq`](#eq-строгое-равенство) (строгое равенство)
1087
- - [`neq`](#neq-неравенство) (неравенство)
1088
- - [`gt`](#gt-больше-чем) (больше чем)
1089
- - [`lt`](#lt-меньше-чем) (меньше чем)
1090
- - [`gte`](#gte-больше-или-равно) (больше или равно)
1091
- - [`lte`](#lte-меньше-или-равно) (меньше или равно)
1092
- - [`inq`](#inq-в-списке) (в списке)
1093
- - [`nin`](#nin-не-в-списке) (не в списке)
1094
- - [`between`](#between-диапазон) (диапазон)
1095
- - [`exists`](#exists-наличие-свойства) (наличие свойства)
1096
- - [`like`](#like-шаблон) (шаблон)
1097
- - [`nlike`](#nlike-исключающий-шаблон) (исключающий шаблон)
1098
- - [`ilike`](#ilike-регистронезависимый-шаблон) (регистронезависимый шаблон)
1099
- - [`nilike`](#nilike-регистронезависимый-шаблон-исключения) (регистронезависимый шаблон исключения)
1100
- - [`regexp`](#regexp-регулярное-выражение) (регулярное выражение)
1028
+ - [`eq`](#eq-строгое-равенство) строгое равенство;
1029
+ - [`neq`](#neq-неравенство) неравенство;
1030
+ - [`gt`](#gt-больше-чем) больше чем;
1031
+ - [`lt`](#lt-меньше-чем) меньше чем;
1032
+ - [`gte`](#gte-больше-или-равно) больше или равно;
1033
+ - [`lte`](#lte-меньше-или-равно) меньше или равно;
1034
+ - [`inq`](#inq-в-списке) в списке;
1035
+ - [`nin`](#nin-не-в-списке) не в списке;
1036
+ - [`between`](#between-диапазон) диапазон;
1037
+ - [`exists`](#exists-наличие-свойства) наличие свойства;
1038
+ - [`like`](#like-шаблон) *SQL*-подобный шаблон;
1039
+ - [`nlike`](#nlike-исключающий-шаблон) исключающий шаблон;
1040
+ - [`ilike`](#ilike-регистронезависимый-шаблон) регистронезависимый шаблон;
1041
+ - [`nilike`](#nilike-регистронезависимый-шаблон-исключения) регистронезависимый шаблон исключения;
1042
+ - [`regexp`](#regexp-регулярное-выражение) регулярное выражение;
1101
1043
 
1102
1044
  Условия можно объединять логическими операторами:
1103
1045
 
1104
- - [`and`](#and-логическое-и) (логическое И)
1105
- - [`or`](#or-логическое-или) (логическое ИЛИ)
1046
+ - [`and`](#and-логическое-и) логическое *И*;
1047
+ - [`or`](#or-логическое-или) логическое *ИЛИ*;
1106
1048
 
1107
1049
  #### Поиск по значению (сокращенная форма)
1108
1050
 
@@ -2141,12 +2083,6 @@ const city: City = await cityRep.create({
2141
2083
  });
2142
2084
  ```
2143
2085
 
2144
- Для определения моделей с помощью TypeScript классов,
2145
- рекомендуется использовать специальную версию данного модуля
2146
- [@e22m4u/ts-repository](https://www.npmjs.com/package/@e22m4u/ts-repository),
2147
- поставляемую с набором TypeScript декораторов и дополнительных
2148
- инструментов для работы в TypeScript окружении.
2149
-
2150
2086
  ## Тесты
2151
2087
 
2152
2088
  ```bash