e22m4u 2 лет назад
Родитель
Сommit
0164ca7242
1 измененных файлов с 36 добавлено и 73 удалено
  1. 36 73
      README.md

+ 36 - 73
README.md

@@ -8,90 +8,53 @@
 npm install @e22m4u/js-repository
 ```
 
-Опционально устанавливаем адаптер для базы данных.
+Опционально устанавливаем требуемый адаптер.
 
 |           | описание                                                                                                                       |
 |-----------|--------------------------------------------------------------------------------------------------------------------------------|
 | `memory`  | виртуальная база в памяти процесса (не требует установки)                                                                      |
 | `mongodb` | MongoDB - система управления NoSQL базами (*[установка](https://www.npmjs.com/package/@e22m4u/js-repository-mongodb-adapter))* |
 
-## Введение
-
-Модуль позволяет объединить несколько баз данных в единую абстракцию «Схема».
-Являясь экземпляром класса `Schema`, абстракция предоставляет методы для
-определения «Источника данных» и «Модели». Источник заботится о подключении
-к базе, а модель описывает структуру документа коллекции и связи к другим
-моделям.
-
-Непосредственно чтение и запись производится с помощью «Репозитория», который
-можно получить для каждой модели, если она имеет источник данных.
-
-```mermaid
-flowchart TD
-
-  A[Схема]
-  subgraph Базы данных
-    B[Источник 1]
-    C[Источник 2]
-  end
-  A-->B
-  A-->C
-
-  subgraph Коллекции
-    D[Модель A]
-    E[Модель Б]
-    F[Модель В]
-    G[Модель Г]
-  end
-  B-->D
-  B-->E
-  C-->F
-  C-->G
-
-  H[Репозиторий A]
-  I[Репозиторий Б]
-  J[Репозиторий В]
-  K[Репозиторий Г]
-  D-->H
-  E-->I
-  F-->J
-  G-->K
-```
+## Пример
 
-Репозиторий имеет набор методов для различных операций с документами модели.
-Некоторые из методов позволяют разрешать связи в момент обращения к данным,
-встраивая документы других моделей в результат выборки.
+```js
+import {Schema} from '@e22m4u/js-repository'
 
-Если модель `city` в своем определении имеет связь `country`, то пример
-запроса с включением связанных документов методом `find` может выглядеть так:
+// создание экземпляра схемы
+const schema = new Schema();
 
-```js
-const cities = await cityRep.find({
-  include: 'country', // включить "country" в результат
+// определение источника "memory"
+schema.defineDatasource({
+  name: 'myMemory', // название нового источника
+  adapter: 'memory', // выбранный адаптер
+});
+
+// определение модели "country"
+schema.defineModel({
+  name: 'country', // название новой модели
+  datasource: 'myMemory', // выбранный источник
+  properties: { // поля модели
+    name: DataType.STRING, // поле "name" типа "string"
+    population: DataType.NUMBER, // поле "population" типа "number"
+  },
+})
+
+// получение репозитория для модели "country"
+const countryRep = schema.getRepository('country');
+
+// добавление нового документа в коллекцию "country"
+const country = await countryRep.create({
+  name: 'Russia',
+  population: 143400000,
 });
 
-console.log(cities);
-// [
-//   {
-//     "id": 24,
-//     "name": "Moscow",
-//     "countryId": 12, <= ключ целевой модели
-//     "country": { <= связанный документ
-//       "id": 12,
-//       "name": "Russia",
-//     }
-//   },
-//   {
-//     "id": 25,
-//     "name": "Bangkok",
-//     "countryId": 13, <= ключ целевой модели
-//     "country": { <= связанный документ
-//       "id": 13,
-//       "name": "Thailand",
-//     }
-//   },
-//   ...
-// ]
+// вывод результата
+console.log(country);
+// {
+//   "id": 1,
+//   "name": "Russia",
+//   "population": 143400000,
+// }
 ```
 
 ## Тесты