Browse Source

chore: updates README.md

e22m4u 1 month ago
parent
commit
2d457e87a3
1 changed files with 46 additions and 97 deletions
  1. 46 97
      README.md

+ 46 - 97
README.md

@@ -41,7 +41,7 @@ npm install @e22m4u/js-repository
 | `memory`  | Виртуальная база в памяти процесса (не требует установки)                                                                      |
 | `mongodb` | MongoDB - система управления NoSQL базами (*[установка](https://www.npmjs.com/package/@e22m4u/js-repository-mongodb-adapter))* |
 
-# Импорт
+## Импорт
 
 Модуль поддерживает ESM и CommonJS стандарты.
 
@@ -57,7 +57,7 @@ import {DatabaseSchema} from '@e22m4u/js-repository';
 const {DatabaseSchema} = require('@e22m4u/js-repository');
 ```
 
-# Описание
+## Описание
 
 Модуль позволяет абстрагироваться от различных интерфейсов баз данных,
 представляя их как именованные *источники данных*, подключаемые к *моделям*.
@@ -109,7 +109,7 @@ flowchart TD
   G-->K
 ```
 
-# Пример
+## Пример
 
 Объявление источника данных, модели и добавление нового документа в коллекцию.
 
@@ -154,7 +154,7 @@ console.log(country);
 // }
 ```
 
-# Схема
+## Схема
 
 Экземпляр класса `DatabaseSchema` хранит определения источников данных и моделей.
 
@@ -202,7 +202,7 @@ dbs.defineModel({
 const productRep = dbs.getRepository('product');
 ```
 
-# Источник данных
+## Источник данных
 
 Источник хранит название выбранного адаптера и его настройки. Определение
 нового источника выполняется методом `defineDatasource` экземпляра
@@ -238,7 +238,7 @@ dbs.defineDatasource({
 });
 ```
 
-# Модель
+## Модель
 
 Описывает структуру документа коллекции и связи к другим моделям. Определение
 новой модели выполняется методом `defineModel` экземпляра `DatabaseSchema`.
@@ -266,7 +266,7 @@ dbs.defineModel({
 });
 ```
 
-# Свойства
+## Свойства
 
 Параметр `properties` находится в определении модели и принимает объект, ключи
 которого являются свойствами этой модели, а значением тип свойства или объект
@@ -373,14 +373,14 @@ dbs.defineModel({
 });
 ```
 
-# Валидаторы
+## Валидаторы
 
 Валидаторы используются для проверки значения свойства перед записью в базу.
 Проверка значения валидатором выполняется сразу после проверки типа, указанного
 в определении свойства модели. [Пустые значения](#пустые-значения) пропускают
 проверку валидаторами, так как не имеют полезной нагрузки.
 
-## Глобальные валидаторы
+### Глобальные валидаторы
 
 Модуль поставляется с набором глобальных валидаторов:
 
@@ -470,7 +470,7 @@ dbs.defineModel({
 });
 ```
 
-## Регистрация глобальных валидаторов
+### Регистрация глобальных валидаторов
 
 Валидатором является функция, в которую передается значение соответствующего
 поля перед записью в базу. Если во время проверки функция возвращает `false`,
@@ -570,7 +570,7 @@ dbs.defineModel({
 });
 ```
 
-## Локальные валидаторы
+### Локальные валидаторы
 
 Функция-валидатор может быть передана непосредственно в определении свойства
 без предварительной регистрации. Для этого достаточно передать функцию
@@ -648,14 +648,14 @@ dbs.defineModel({
 });
 ```
 
-# Трансформеры
+## Трансформеры
 
 Трансформеры используются для модификации значения свойства перед проверкой
 типа и передачей данных в базу. Трансформеры позволяют автоматически очищать
 или приводить данные к нужному формату. [Пустые значения](#Пустые-значения)
 не передаются в трансформеры, так как не имеют полезной нагрузки.
 
-## Глобальные трансформеры
+### Глобальные трансформеры
 
 Модуль поставляется с набором глобальных трансформеров:
 
@@ -744,7 +744,7 @@ dbs.defineModel({
 });
 ```
 
-## Регистрация глобальных трансформеров
+### Регистрация глобальных трансформеров
 
 Трансформером является функция, которая принимает значение свойства и возвращает
 новое значение. Функция может быть как синхронной, так и асинхронной (возвращать
@@ -797,7 +797,7 @@ dbs.defineModel({
 });
 ```
 
-## Локальные трансформеры
+### Локальные трансформеры
 
 Функция-трансформер может быть передана непосредственно в определении свойства без предварительной регистрации. Для этого достаточно передать функцию в параметр `transform` в качестве значения или элемента массива.
 
@@ -889,7 +889,7 @@ dbs.defineModel({
 ```
 
 
-# Пустые значения
+## Пустые значения
 
 Разные типы свойств имеют свои наборы пустых значений. Эти наборы
 используются для определения наличия полезной нагрузки в значении
@@ -908,7 +908,7 @@ dbs.defineModel({
 | `'array'`   | `undefined`, `null`, `[]` |
 | `'object'`  | `undefined`, `null`, `{}` |
 
-## Переопределение пустых значений
+### Переопределение пустых значений
 
 Набор пустых значений для любого типа данных можно переопределить. Управление
 этими наборами осуществляется через специальный сервис, который предоставляет
@@ -964,7 +964,7 @@ emptyValuesService.setEmptyValuesOf(DataType.NUMBER, [undefined, null]);
 считаться пустым и будет проходить проверки валидаторами, а также не будет
 заменяться значением по умолчанию.
 
-# Репозиторий
+## Репозиторий
 
 Выполняет операции чтения и записи документов определенной модели.
 Получить репозиторий можно методом `getRepository` экземпляра `DatabaseSchema`.
@@ -1036,7 +1036,7 @@ const res = await countryRep.deleteById(1);
 console.log(res); // true
 ```
 
-# Фильтрация
+## Фильтрация
 
 Некоторые методы репозитория принимают объект настроек влияющий
 на возвращаемый результат. Максимально широкий набор таких настроек
@@ -1110,7 +1110,7 @@ const userProfile = await userRepository.findOne({
 });
 ```
 
-## where
+### where
 
 Параметр принимает объект с условиями выборки и поддерживает широкий
 набор операторов сравнения.
@@ -1135,110 +1135,59 @@ const userProfile = await userRepository.findOne({
 
 *i. Условия можно объединять операторами `and`, `or` и `nor`.*
 
-**Примеры**
-
-Применение условий выборки при подсчете документов.
-
-```js
-const res = await rep.count({
-  authorId: 251,
-  publishedAt: {
-    lte: '2023-12-02T14:00:00.000Z',
-  },
-});
-```
-
-Применение оператора `or` при удалении документов.
-
-```js
-const res = await rep.delete({
-  or: [
-    {draft: true},
-    {title: {ilike: '%draft%'}},
-  ],
-});
-```
-
-### Операторы сопоставления с шаблоном
-
-Операторы `like`, `nlike`, `ilike`, `nilike` предназначены для фильтрации
-строковых свойств на основе сопоставления с шаблоном, подобно оператору
-`LIKE` в SQL. Они позволяют находить значения, которые соответствуют
-определённой структуре, используя специальные символы.
-
-**`%`** соответствует любой последовательности из нуля или более символов:
-
-- `'А%'` найдет все строки, начинающиеся на "А";  
-- `'%а'` найдет все строки, заканчивающиеся на "а";  
-- `'%слово%'` найдет все строки, содержащие "слово" в любом месте;
-
-**`_`** соответствует ровно одному любому символу:
-
-- `'к_т'` найдет "кот", "кит", но не "крот" или "кт";
-- `'кот_'` найдет "коты", "коту" и "кота", но не "кот" или "котов";
-
-Если нужно найти сами символы `%` или `_` как часть строки, их необходимо
-экранировать с помощью обратного слэша `\`:
-
-- `'100\%'` найдет строку "100%";
-- `'file\_name'` найдет строку "file_name";
-- `'path\\to'` найдет строку "path\to";
-
-#### Описание операторов
-
 ##### `like`
 
-Выполняет сопоставление с шаблоном **с учетом регистра**.
+Выполняет сопоставление с шаблоном, с учетом регистра.
 
 ```javascript
-// Найдет {name: 'John Doe'}, но не {name: 'john doe'}
-const filter = {
+// найдет {name: 'John Doe'}, но не {name: 'john doe'}
+const res = await rep.find({
   where: {
     name: {like: 'John%'},
   },
-};
+});
 ```
 
 ##### `nlike` (NOT LIKE)
 
-Противоположность `like`. Находит строки, которые **не соответствуют** шаблону, **с учетом регистра**.
+Находит документы, которые не соответствуют шаблону, с учетом регистра.
 
 ```javascript
-// Найдет все, кроме тех, что начинаются на 'John'
-const filter = {
+// найдет все, кроме тех, что начинаются на 'John'
+const res = await rep.find({
   where: {
     name: {nlike: 'John%'},
   },
-};
+});
 ```
 
 ##### `ilike` (ILIKE)
 
-Выполняет сопоставление с шаблоном **без учета регистра** (case-**i**nsensitive).
+Выполняет сопоставление с шаблоном без учета регистра.
 
-```javascript
-// Найдет {name: 'John Doe'} и {name: 'john doe'}
-const filter = {
+```js
+// найдет {name: 'John Doe'} и {name: 'john doe'}
+const res = await rep.find({
   where: {
     name: {ilike: 'john%'},
   },
-};
+});
 ```
 
 ##### `nilike` (NOT ILIKE)
 
-Противоположность `ilike`. Находит строки, которые **не соответствуют** шаблону, **без учета регистра**.
+Находит строки, которые не соответствуют шаблону, без учета регистра.
 
-```javascript
-// Найдет все, кроме тех, что начинаются на 'John' или 'john'
-const filter = {
+```js
+// найдет все, кроме тех, что начинаются на 'John' или 'john'
+const res = await rep.find({
   where: {
     name: {nilike: 'john%'},
   },
-};
+});
 ```
 
-## order
+### order
 
 Параметр упорядочивает выборку по указанным свойствам модели. Обратное
 направление порядка можно задать постфиксом `DESC` в названии свойства.
@@ -1275,7 +1224,7 @@ const res = await rep.find({
 
 *i. Направление порядка `ASC` указывать необязательно.*
 
-## include
+### include
 
 Параметр включает связанные документы в результат вызываемого метода.
 Названия включаемых связей должны быть определены в текущей модели.
@@ -1331,7 +1280,7 @@ const res = await rep.find({
 });
 ```
 
-# Связи
+## Связи
 
 Связи позволяют описывать отношения между моделями, что дает возможность
 автоматически встраивать связанные данные с помощью опции `include`
@@ -1362,7 +1311,7 @@ console.log(user);
 // }
 ```
 
-## Определение связи
+### Определение связи
 
 Свойство `relations` в определении модели принимает объект, ключи которого
 являются названиями связей, а значения их параметрами. В дальнейшем название
@@ -1545,7 +1494,7 @@ dbs.defineModel({
 });
 ```
 
-# Расширение
+## Расширение
 
 Метод `getRepository` экземпляра `DatabaseSchema` проверяет наличие
 существующего  репозитория для указанной модели и возвращает его.
@@ -1591,7 +1540,7 @@ console.log(rep instanceof MyRepository); // true
 *i. Так как экземпляры репозитория кэшируется, то замену конструктора
 следует выполнять до обращения к методу `getRepository`.*
 
-# TypeScript
+## TypeScript
 
 Получение типизированного репозитория с указанием интерфейса модели.
 
@@ -1634,12 +1583,12 @@ interface City {
 const cityRep = dbs.getRepository<City, number>('city');
 ```
 
-# Тесты
+## Тесты
 
 ```bash
 npm run test
 ```
 
-# Лицензия
+## Лицензия
 
 MIT