@e22m4u/js-repository 0.8.5 → 0.8.6

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.
Files changed (44) hide show
  1. package/README.md +27 -23
  2. package/dist/cjs/index.cjs +746 -325
  3. package/eslint.config.js +1 -0
  4. package/package.json +14 -13
  5. package/src/adapter/adapter-loader.js +9 -4
  6. package/src/adapter/adapter-registry.js +3 -1
  7. package/src/adapter/builtin/memory-adapter.js +29 -13
  8. package/src/adapter/decorator/data-sanitizing-decorator.js +2 -1
  9. package/src/adapter/decorator/default-values-decorator.js +2 -1
  10. package/src/adapter/decorator/fields-filtering-decorator.js +14 -7
  11. package/src/adapter/decorator/inclusion-decorator.js +14 -7
  12. package/src/adapter/decorator/property-uniqueness-decorator.js +2 -1
  13. package/src/adapter/decorator/required-property-decorator.js +2 -1
  14. package/src/definition/datasource/datasource-definition-validator.js +6 -3
  15. package/src/definition/definition-registry.js +8 -4
  16. package/src/definition/model/model-data-sanitizer.js +4 -2
  17. package/src/definition/model/model-definition-utils.js +68 -26
  18. package/src/definition/model/model-definition-validator.js +10 -5
  19. package/src/definition/model/properties/primary-keys-definition-validator.js +4 -2
  20. package/src/definition/model/properties/properties-definition-validator.js +36 -18
  21. package/src/definition/model/properties/property-uniqueness-validator.js +26 -10
  22. package/src/definition/model/properties/property-uniqueness-validator.spec.js +500 -38
  23. package/src/definition/model/relations/relations-definition-validator.js +70 -33
  24. package/src/filter/fields-clause-tool.js +31 -12
  25. package/src/filter/include-clause-tool.js +38 -15
  26. package/src/filter/operator-clause-tool.js +55 -23
  27. package/src/filter/order-clause-tool.js +36 -13
  28. package/src/filter/slice-clause-tool.js +16 -7
  29. package/src/filter/where-clause-tool.js +24 -10
  30. package/src/relations/belongs-to-resolver.js +44 -20
  31. package/src/relations/has-many-resolver.js +52 -25
  32. package/src/relations/has-one-resolver.js +58 -27
  33. package/src/relations/references-many-resolver.js +24 -11
  34. package/src/repository/repository-registry.js +3 -1
  35. package/src/repository/repository.js +2 -1
  36. package/src/utils/capitalize.js +3 -1
  37. package/src/utils/clone-deep.js +6 -2
  38. package/src/utils/exclude-object-keys.js +2 -1
  39. package/src/utils/get-value-by-path.js +6 -2
  40. package/src/utils/is-deep-equal.js +21 -7
  41. package/src/utils/is-promise.js +6 -2
  42. package/src/utils/model-name-to-model-key.js +2 -1
  43. package/src/utils/select-object-keys.js +9 -4
  44. package/src/utils/singularize.js +3 -1
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  - [Импорт](#импорт)
12
12
  - [Описание](#описание)
13
13
  - [Пример](#пример)
14
- - [Схема](#схема)
14
+ - [Схема баз данных](#схема-баз-данных)
15
15
  - [Источник данных](#источник-данных)
16
16
  - [Модель](#модель)
17
17
  - [Свойства](#свойства)
@@ -93,7 +93,7 @@ const {DatabaseSchema} = require('@e22m4u/js-repository');
93
93
  ```mermaid
94
94
  flowchart TD
95
95
 
96
- A[Схема]
96
+ A[DatabaseSchema]
97
97
  subgraph Базы данных
98
98
  B[Источник данных 1]
99
99
  C[Источник данных 2]
@@ -103,9 +103,9 @@ flowchart TD
103
103
 
104
104
  subgraph Коллекции
105
105
  D[Модель A]
106
- E[Модель Б]
107
- F[Модель В]
108
- G[Модель Г]
106
+ E[Модель B]
107
+ F[Модель C]
108
+ G[Модель D]
109
109
  end
110
110
  B-->D
111
111
  B-->E
@@ -113,9 +113,9 @@ flowchart TD
113
113
  C-->G
114
114
 
115
115
  H[Репозиторий A]
116
- I[Репозиторий Б]
117
- J[Репозиторий В]
118
- K[Репозиторий Г]
116
+ I[Репозиторий B]
117
+ J[Репозиторий C]
118
+ K[Репозиторий D]
119
119
  D-->H
120
120
  E-->I
121
121
  F-->J
@@ -253,9 +253,12 @@ console.log(cityWithCountry);
253
253
  // }
254
254
  ```
255
255
 
256
- ## Схема
256
+ ## Схема баз данных
257
257
 
258
- Экземпляр класса `DatabaseSchema` хранит определения источников данных и моделей.
258
+ Экземпляр класса `DatabaseSchema` (далее *«Схема»*) хранит определения
259
+ источников данных и моделей. Схема связывает модели с источниками данных
260
+ и используется для получения репозиториев, которые выполняют операции
261
+ чтения и записи.
259
262
 
260
263
  **Методы**
261
264
 
@@ -383,14 +386,15 @@ dbs.defineModel({
383
386
  **Параметры**
384
387
 
385
388
  - `type: string` тип допустимого значения (обязательно);
386
- - `itemType: string` тип элемента массива (для `type: 'array'`);
387
- - `model: string` модель объекта (для `type: 'object'`);
388
- - `primaryKey: boolean` объявить свойство первичным ключом;
389
- - `columnName: string` переопределение названия колонки;
390
- - `columnType: string` тип колонки (определяется адаптером);
391
- - `required: boolean` объявить свойство обязательным;
392
- - `default: any` значение по умолчанию (заменяет `undefined` и `null`);
393
- - `unique: boolean | string` проверять значение на уникальность;
389
+ - `itemType?: string` тип элемента массива (для `type: 'array'`);
390
+ - `itemModel?: string` модель элемента массива (для `type: 'array'`);
391
+ - `model?: string` модель объекта (для `type: 'object'`);
392
+ - `primaryKey?: boolean` объявить свойство первичным ключом;
393
+ - `columnName?: string` переопределение названия колонки;
394
+ - `columnType?: string` тип колонки (определяется адаптером);
395
+ - `required?: boolean` объявить свойство обязательным;
396
+ - `default?: any` значение по умолчанию (заменяет `undefined` и `null`);
397
+ - `unique?: boolean | string` проверять значение на уникальность;
394
398
 
395
399
  **Параметр `unique`**
396
400
 
@@ -498,8 +502,8 @@ dbs.defineModel({
498
502
 
499
503
  - `id: number|string` идентификатор (первичный ключ);
500
504
  - `data: object` данные документа (используется при записи);
501
- - `where: object` условия фильтрации (см. [Фильтрация](#Фильтрация));
502
- - `filter: object` параметры выборки (см. [Фильтрация](#Фильтрация));
505
+ - `where: object` условия фильтрации (см. [Фильтрация](#фильтрация));
506
+ - `filter: object` параметры выборки (см. [Фильтрация](#фильтрация));
503
507
 
504
508
  **Получение репозитория**
505
509
 
@@ -835,8 +839,8 @@ if (!product) {
835
839
 
836
840
  ### repository.findById
837
841
 
838
- Находит один документ по его уникальному идентификатору. Если документ не
839
- найден, выбрасывается ошибка.
842
+ Поиск документа по идентификатору. Если документ не найден, выбрасывается
843
+ ошибка.
840
844
 
841
845
  Сигнатура:
842
846
 
@@ -1362,7 +1366,7 @@ const res = await rep.find({
1362
1366
 
1363
1367
  Параметр включает связанные документы в результат вызываемого метода.
1364
1368
  Названия включаемых связей должны быть определены в текущей модели.
1365
- (см. [Связи](#Связи))
1369
+ (см. [Связи](#связи))
1366
1370
 
1367
1371
  **Примеры**
1368
1372