Browse Source

chore: updates README.md

e22m4u 2 years ago
parent
commit
9c2569749d
81 changed files with 159 additions and 0 deletions
  1. 159 0
      README.md
  2. 0 0
      docs/classes/Adapter.html
  3. 0 0
      docs/classes/AdapterLoader.html
  4. 0 0
      docs/classes/AdapterRegistry.html
  5. 0 0
      docs/classes/BelongsToResolver.html
  6. 0 0
      docs/classes/DatasourceDefinitionValidator.html
  7. 0 0
      docs/classes/DefinitionRegistry.html
  8. 0 0
      docs/classes/FieldsClauseTool.html
  9. 0 0
      docs/classes/HasManyResolver.html
  10. 0 0
      docs/classes/HasOneResolver.html
  11. 0 0
      docs/classes/IncludeClauseTool.html
  12. 0 0
      docs/classes/InvalidArgumentError.html
  13. 0 0
      docs/classes/InvalidOperatorValueError.html
  14. 0 0
      docs/classes/ModelDataSanitizer.html
  15. 0 0
      docs/classes/ModelDataValidator.html
  16. 0 0
      docs/classes/ModelDefinitionUtils.html
  17. 0 0
      docs/classes/ModelDefinitionValidator.html
  18. 0 0
      docs/classes/NotImplementedError.html
  19. 0 0
      docs/classes/OperatorClauseTool.html
  20. 0 0
      docs/classes/OrderClauseTool.html
  21. 0 0
      docs/classes/PrimaryKeysDefinitionValidator.html
  22. 0 0
      docs/classes/PropertiesDefinitionValidator.html
  23. 0 0
      docs/classes/ReferencesManyResolver.html
  24. 0 0
      docs/classes/RelationsDefinitionValidator.html
  25. 0 0
      docs/classes/Repository.html
  26. 0 0
      docs/classes/RepositoryRegistry.html
  27. 0 0
      docs/classes/Schema.html
  28. 0 0
      docs/classes/SliceClauseTool.html
  29. 0 0
      docs/classes/WhereClauseTool.html
  30. 0 0
      docs/enums/DataType.html
  31. 0 0
      docs/enums/RelationType.html
  32. 0 0
      docs/functions/capitalize.html
  33. 0 0
      docs/functions/cloneDeep.html
  34. 0 0
      docs/functions/excludeObjectKeys.html
  35. 0 0
      docs/functions/getCtorName.html
  36. 0 0
      docs/functions/getValueByPath.html
  37. 0 0
      docs/functions/isCtor.html
  38. 0 0
      docs/functions/isPureObject.html
  39. 0 0
      docs/functions/selectObjectKeys.html
  40. 0 0
      docs/functions/singularize.html
  41. 0 0
      docs/functions/stringToRegexp.html
  42. 0 0
      docs/index.html
  43. 0 0
      docs/interfaces/AndClause.html
  44. 0 0
      docs/interfaces/OrClause.html
  45. 0 0
      docs/types/AnyObject.html
  46. 0 0
      docs/types/BelongsToDefinition.html
  47. 0 0
      docs/types/DEFAULT_PRIMARY_KEY_PROPERTY_NAME.html
  48. 0 0
      docs/types/DatasourceDefinition.html
  49. 0 0
      docs/types/FieldsClause.html
  50. 0 0
      docs/types/FilterClause.html
  51. 0 0
      docs/types/Flatten.html
  52. 0 0
      docs/types/FullPropertyDefinition.html
  53. 0 0
      docs/types/HasManyDefinition.html
  54. 0 0
      docs/types/HasOneDefinition.html
  55. 0 0
      docs/types/Identity.html
  56. 0 0
      docs/types/IncludeClause.html
  57. 0 0
      docs/types/ItemFilterClause.html
  58. 0 0
      docs/types/ModelData.html
  59. 0 0
      docs/types/ModelDefinition.html
  60. 0 0
      docs/types/ModelId.html
  61. 0 0
      docs/types/NestedIncludeClause.html
  62. 0 0
      docs/types/NormalizedFieldsClause.html
  63. 0 0
      docs/types/NormalizedIncludeClause.html
  64. 0 0
      docs/types/OperatorClause.html
  65. 0 0
      docs/types/OptionalUnlessRequiredId.html
  66. 0 0
      docs/types/OrderClause.html
  67. 0 0
      docs/types/PartialBy.html
  68. 0 0
      docs/types/PartialWithoutId.html
  69. 0 0
      docs/types/PolyBelongsToDefinition.html
  70. 0 0
      docs/types/PolyHasManyDefinitionWithTargetKeys.html
  71. 0 0
      docs/types/PolyHasManyDefinitionWithTargetRelationName.html
  72. 0 0
      docs/types/PolyHasOneDefinitionWithTargetKeys.html
  73. 0 0
      docs/types/PolyHasOneDefinitionWithTargetRelationName.html
  74. 0 0
      docs/types/PropertiesClause.html
  75. 0 0
      docs/types/PropertyDefinition.html
  76. 0 0
      docs/types/PropertyDefinitionMap.html
  77. 0 0
      docs/types/ReferencesManyDefinition.html
  78. 0 0
      docs/types/RelationDefinition.html
  79. 0 0
      docs/types/RelationDefinitionMap.html
  80. 0 0
      docs/types/WhereClause.html
  81. 0 0
      docs/types/WithoutId.html

+ 159 - 0
README.md

@@ -4,6 +4,15 @@
 
 [API](https://e22m4u.github.io/js-repository/modules.html)
 
+- [Установка](#Установка)
+- [Пример](#Пример)
+- [Использование](#Использование)
+- [Источник данных](#Источник-данных)
+- [Модель](#Модель)
+- [Репозиторий](#Репозиторий)
+- [Тесты](#Тесты)
+- [Лицензия](#Лицензия)
+
 ## Установка
 
 ```bash
@@ -61,6 +70,156 @@ console.log(country);
 // }
 ```
 
+## Использование
+
+Экземпляр класса `Schema` хранит информацию об источниках данных, моделей
+и предоставляет методы для их определения.
+
+```js
+import {Schema} from '@e22m4u/js-repository';
+
+const schema = new Schema();
+```
+
+С помощью метода `defineDatasource` определяются источники данных. Источник
+данных хранит название адаптера и его настройки.
+
+```js
+schema.defineDatasource({
+  name: 'myMemory', // название нового источника
+  adapter: 'memory', // выбранный адаптер
+});
+```
+
+Когда источник определен, можно добавить модель методом `defineModel`.
+Модель описывает структуру документа коллекции и связи к другим моделям.
+
+```js
+schema.defineModel({
+  name: 'country', // название новой модели
+  datasource: 'myMemory', // выбранный источник
+  properties: { // поля модели
+    name: DataType.STRING, // поле "name" типа "string"
+    population: DataType.NUMBER, // поле "population" типа "number"
+  },
+});
+```
+
+Наличие источника данных в модели позволяет получить репозиторий по
+ее названию.
+
+```js
+// получение репозитория для модели "country"
+const countryRep = schema.getRepository('country');
+```
+
+Репозиторий является инструментом для чтения и записи документов
+определенной модели.
+
+```js
+// добавление нового документа в коллекцию "country"
+const country = await countryRep.create({
+  name: 'Russia',
+  population: 143400000,
+});
+
+// вывод результата
+console.log(country);
+// {
+//   "id": 1,
+//   "name": "Russia",
+//   "population": 143400000,
+// }
+```
+
+## Источник данных
+
+Определяется методом `schema.defineDatasource`
+
+**Параметры**
+
+- `name: string` уникальное название
+- `adapter: string` выбранный адаптер
+- параметры адаптера (если имеются)
+
+**Пример**
+
+```js
+schema.defineDatasource({
+  name: 'myMemory', // название нового источника
+  adapter: 'memory', // выбранный адаптер
+});
+```
+
+## Модель
+
+Определяется методом `schema.defineModel`
+
+**Параметры**
+
+- `name: string` название модели (обязательно)
+- `base: string` название наследуемой модели
+- `tableName: string` название коллекции в базе
+- `datasource: string` выбранный источник данных
+- `properties: object` определения полей модели
+- `relations: object` определения связей (см. Связи)
+
+**Пример**
+
+```js
+schema.defineModel({
+  name: 'country', // название новой модели
+  datasource: 'myMemory', // выбранный источник
+  properties: { // поля модели
+    name: DataType.STRING, // поле "name" типа "string"
+    population: DataType.NUMBER, // поле "population" типа "number"
+  },
+});
+```
+
+## Репозиторий
+
+Получить репозиторий методом `schema.getRepository`
+
+**Методы**
+
+- `create(data, filter = undefined)` добавить новый документ
+- `replaceById(id, data, filter = undefined)` заменить весь документ
+- `patchById(id, data, filter = undefined)` частично обновить документ
+- `patch(data, where = undefined)` обновить все документы или по условию
+- `find(filter = undefined)` найти все документы или по условию
+- `findOne(filter = undefined)` найти первый документ или по условию
+- `findById(id, filter = undefined)` найти документ по идентификатору
+- `delete(where = undefined)` удалить все документы или по условию
+- `deleteById(id)` удалить документ по идентификатору
+- `exists(id)` проверить существование по идентификатору
+- `count(where = undefined)` подсчет всех документов или по условию
+
+**Аргументы**
+
+- `id` идентификатор (первичный ключ)
+- `data` объект отражающий состав документа
+- `where` параметры выборки (см. Фильтрация)
+- `filter` параметры возвращаемого результата (см. Фильтрация)
+
+**Пример**
+
+```js
+// добавление нового документа в коллекцию "country"
+const country = await countryRep.create({
+  name: 'Russia',
+  population: 143400000,
+});
+
+// вывод результата
+console.log(country);
+// {
+//   "id": 1,
+//   "name": "Russia",
+//   "population": 143400000,
+// }
+```
+
 ## Тесты
 
 ```bash

File diff suppressed because it is too large
+ 0 - 0
docs/classes/Adapter.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/AdapterLoader.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/AdapterRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/BelongsToResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/DatasourceDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/DefinitionRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/FieldsClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/HasManyResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/HasOneResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/IncludeClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/InvalidArgumentError.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/InvalidOperatorValueError.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDataSanitizer.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDataValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDefinitionUtils.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/NotImplementedError.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/OperatorClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/OrderClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/PrimaryKeysDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/PropertiesDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ReferencesManyResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/RelationsDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/Repository.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/RepositoryRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/Schema.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/SliceClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/WhereClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/enums/DataType.html


File diff suppressed because it is too large
+ 0 - 0
docs/enums/RelationType.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/capitalize.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/cloneDeep.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/excludeObjectKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/getCtorName.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/getValueByPath.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/isCtor.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/isPureObject.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/selectObjectKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/singularize.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/stringToRegexp.html


File diff suppressed because it is too large
+ 0 - 0
docs/index.html


File diff suppressed because it is too large
+ 0 - 0
docs/interfaces/AndClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/interfaces/OrClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/AnyObject.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/BelongsToDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/DEFAULT_PRIMARY_KEY_PROPERTY_NAME.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/DatasourceDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/FieldsClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/FilterClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/Flatten.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/FullPropertyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/HasManyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/HasOneDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/Identity.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/IncludeClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ItemFilterClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ModelData.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ModelDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ModelId.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/NestedIncludeClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/NormalizedFieldsClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/NormalizedIncludeClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/OperatorClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/OptionalUnlessRequiredId.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/OrderClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PartialBy.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PartialWithoutId.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyBelongsToDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasManyDefinitionWithTargetKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasManyDefinitionWithTargetRelationName.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasOneDefinitionWithTargetKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasOneDefinitionWithTargetRelationName.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertiesClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyDefinitionMap.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ReferencesManyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/RelationDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/RelationDefinitionMap.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/WhereClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/WithoutId.html


Some files were not shown because too many files changed in this diff