Browse Source

chore: updates README.md

e22m4u 1 month ago
parent
commit
c118083ee5
1 changed files with 348 additions and 32 deletions
  1. 348 32
      README.md

+ 348 - 32
README.md

@@ -971,18 +971,18 @@ emptyValuesService.setEmptyValuesOf(DataType.NUMBER, [undefined, null]);
 
 **Методы**
 
-- `create(data, filter = undefined)` добавить новый документ
-- `replaceById(id, data, filter = undefined)` заменить весь документ
-- `replaceOrCreate(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)` подсчет всех документов или по условию
+- [`create(data, filter = undefined)`](#repositorycreate) добавить новый документ;
+- [`replaceById(id, data, filter = undefined)`](#repositoryreplacebyid) заменить весь документ;
+- [`replaceOrCreate(data, filter = undefined)`](#repositoryreplaceorcreate) заменить или создать новый;
+- [`patchById(id, data, filter = undefined)`](#repositorypatchbyid) частично обновить документ;
+- [`patch(data, where = undefined)`](#repositorypatch) обновить все документы или по условию;
+- [`find(filter = undefined)`](#repositoryfind) найти все документы или по условию;
+- [`findOne(filter = undefined)`](#repositoryfindone) найти первый документ или по условию;
+- [`findById(id, filter = undefined)`](#repositoryfindbyid) найти документ по идентификатору;
+- [`delete(where = undefined)`](#repositorydelete) удалить все документы или по условию;
+- [`deleteById(id)`](#repositorydeletebyid) удалить документ по идентификатору;
+- [`exists(id)`](#repositoryexists) проверить существование по идентификатору;
+- [`count(where = undefined)`](#repositorycount) подсчет всех документов или по условию;
 
 **Аргументы**
 
@@ -991,49 +991,365 @@ emptyValuesService.setEmptyValuesOf(DataType.NUMBER, [undefined, null]);
 - `where: object` условия фильтрации (см. [Фильтрация](#Фильтрация))
 - `filter: object` параметры выборки (см. [Фильтрация](#Фильтрация))
 
-**Примеры**
-
-Получение репозитория по названию модели.
+Получение репозитория по названию модели:
 
 ```js
 const countryRep = dbs.getRepository('country');
 ```
 
-Добавление нового документа в коллекцию.
+### repository.create
+
+Создает новый документ в коллекции на основе переданных данных. Возвращает
+созданный документ с присвоенным идентификатором.
+
+**Сигнатура:**
+
+```ts
+create(
+  data: WithOptionalId<FlatData, IdName>,
+  filter?: ItemFilterClause<FlatData>,
+): Promise<FlatData>;
+```
+
+**Примеры:**
+
+Создание нового документа.
 
 ```js
-const res = await countryRep.create({
-  name: 'Russia',
-  population: 143400000,
+const newProduct = await productRep.create({
+  name: 'Laptop',
+  price: 1200,
 });
+console.log(newProduct);
+// {
+//   id: 1,
+//   name: 'Laptop',
+//   price: 1200,
+// }
+```
 
-console.log(res);
+Создание документа с возвратом определенных полей.
+
+```js
+const product = await productRep.create(
+  {name: 'Mouse', price: 25},
+  {fields: ['id', 'name']},
+);
+console.log(product);
 // {
-//   "id": 1,
-//   "name": "Russia",
-//   "population": 143400000,
+//   id: 1,
+//   name: 'Mouse',
 // }
 ```
 
-Поиск документа по идентификатору.
+### repository.replaceById
+
+Полностью заменяет существующий документ по его идентификатору. Все
+предыдущие данные документа, кроме идентификатора, будут удалены и заменены
+новыми.
+
+**Сигнатура:**
+
+```ts
+replaceById(
+  id: IdType,
+  data: WithoutId<FlatData, IdName>,
+  filter?: ItemFilterClause<FlatData>,
+): Promise<FlatData>;
+```
+
+**Примеры:**
+
+Замена документа по идентификатору.
+
+```js
+const updatedProduct = await productRep.replaceById(1, {
+  name: 'Laptop Pro',
+  price: 1500,
+  inStock: true,
+});
+console.log(updatedProduct);
+// {
+//   id: 1,
+//   name: 'Laptop Pro',
+//   price: 1500,
+//   inStock: true,
+// }
+```
+
+### repository.replaceOrCreate
+
+Заменяет существующий документ, если в переданных данных присутствует
+идентификатор, который уже существует в коллекции. В противном случае
+создает новый документ.
+
+**Сигнатура:**
+
+```ts
+replaceOrCreate(
+  data: WithOptionalId<FlatData, IdName>,
+  filter?: ItemFilterClause<FlatData>,
+): Promise<FlatData>;
+```
+
+**Примеры:**
+
+Создание нового документа, если `id: 1` не существует.
 
 ```js
-const res = await countryRep.findById(1);
+const product = await productRep.replaceOrCreate({
+  id: 1,
+  name: 'Laptop',
+  price: 1200,
+});
+console.log(product);
+// {
+//   id: 1,
+//   name: 'Laptop',
+//   price: 1200,
+// }
+```
+
+Замена существующего документа с `id: 1`.
 
-console.log(res);
+```js
+const updatedProduct = await productRep.replaceOrCreate({
+  id: 1,
+  name: 'Laptop Pro',
+  price: 1500,
+});
+console.log(updatedProduct);
 // {
-//   "id": 1,
-//   "name": "Russia",
-//   "population": 143400000,
+//   id: 1,
+//   name: 'Laptop Pro',
+//   price: 1500,
 // }
 ```
 
-Удаление документа по идентификатору.
+### repository.patch
+
+Частично обновляет один или несколько документов, соответствующих условиям
+`where`. Возвращает количество обновленных документов. Если `where` не указан,
+обновляет все документы в коллекции.
+
+**Сигнатура:**
+
+```ts
+patch(
+  data: PartialWithoutId<FlatData, IdName>,
+  where?: WhereClause<FlatData>,
+): Promise<number>;
+```
+
+**Примеры:**
+
+Обновление документов по условию.
+
+```js
+const updatedCount = await productRep.patch(
+  {inStock: false},
+  {price: {lt: 30}},
+);
+// обновит все товары с ценой меньше 30
+```
+
+Обновление всех документов.
+
+```js
+const totalCount = await productRep.patch({
+  updatedAt: new Date(),
+});
+// добавит поле updatedAt ко всем документам
+```
+
+### repository.patchById
+
+Частично обновляет существующий документ по его идентификатору, изменяя
+только переданные поля.
+
+**Сигнатура:**
+
+```ts
+patchById(
+  id: IdType,
+  data: PartialWithoutId<FlatData, IdName>,
+  filter?: ItemFilterClause<FlatData>,
+): Promise<FlatData>;
+```
+
+**Примеры:**
+
+Частичное обновление документа по идентификатору.
+```js
+const updatedProduct = await productRep.patchById(1, {
+  price: 1450,
+});
+```
+
+### repository.find
+
+Находит все документы, соответствующие условиям фильтрации, и возвращает их
+в виде массива. Если фильтр не указан, возвращает все документы коллекции.
+
+**Сигнатура:**
+```ts
+find(filter?: FilterClause<FlatData>): Promise<FlatData[]>;
+```
+
+**Примеры:**
+
+Поиск всех документов.
+
+```js
+const allProducts = await productRep.find();
+```
+
+Поиск документов по условию `where`.
+
+```js
+const cheapProducts = await productRep.find({
+  where: {price: {lt: 100}},
+});
+```
+
+### repository.findOne
+
+Находит первый документ, соответствующий условиям фильтрации. Если документы
+не найдены, возвращает `undefined`. Удобен для случаев, когда ожидается не
+более одного результата.
+
+**Сигнатура:**
+
+```ts
+findOne(
+  filter?: FilterClause<FlatData>,
+): Promise<FlatData | undefined>;
+```
+
+**Примеры:**
+
+Поиск одного документа по условию.
+
+```js
+const expensiveProduct = await productRep.findOne({
+  where: {price: {gt: 1000}},
+  order: 'price DESC',
+});
+```
+
+### repository.findById
+
+Находит один документ по его уникальному идентификатору. Если документ не
+найден, то выбрасывает ошибку.
+
+**Сигнатура:**
+
+```ts
+findById(
+  id: IdType,
+  filter?: ItemFilterClause<FlatData>,
+): Promise<FlatData>;
+```
+
+**Примеры:**
+
+Поиск документа по `id`.
+
+```js
+const product = await productRep.findById(1);
+```
+
+### repository.delete
+
+Удаляет один или несколько документов, соответствующих условиям `where`.
+Возвращает количество удаленных документов. Если `where` не указан, удаляет
+все документы в коллекции.
+
+**Сигнатура:**
+
+```ts
+delete(where?: WhereClause<FlatData>): Promise<number>;
+```
+
+**Примеры:**
+
+Удаление документов по условию.
+
+```js
+const deletedCount = await productRep.delete({
+  inStock: false,
+});
+```
+
+Удаление всех документов.
 
 ```js
-const res = await countryRep.deleteById(1);
+const totalCount = await productRep.delete();
+```
+
+### repository.deleteById
+
+Удаляет один документ по его уникальному идентификатору. Возвращает `true`,
+если документ был найден и удален, в противном случае `false`.
+
+**Сигнатура:**
+
+```ts
+deleteById(id: IdType): Promise<boolean>;
+```
 
-console.log(res); // true
+**Примеры:**
+
+Удаление документа по `id`.
+
+```js
+const wasDeleted = await productRep.deleteById(1);
+```
+
+### repository.exists
+
+Проверяет существование документа с указанным идентификатором. Возвращает
+`true`, если документ существует, иначе `false`.
+
+**Сигнатура:**
+
+```ts
+exists(id: IdType): Promise<boolean>;
+```
+
+**Примеры:**
+
+Проверка существования документа по `id`.
+
+```js
+const productExists = await productRep.exists(1);
+```
+
+### repository.count
+
+Подсчитывает количество документов, соответствующих условиям `where`. Если
+`where` не указан, возвращает общее количество документов в коллекции.
+
+**Сигнатура:**
+
+```ts
+count(where?: WhereClause<FlatData>): Promise<number>;
+```
+
+**Примеры:**
+
+Подсчет документов по условию.
+
+```js
+const cheapCount = await productRep.count({
+  price: {lt: 100},
+});
+```
+
+Подсчет всех документов.
+
+```js
+const totalCount = await productRep.count();
 ```
 
 ## Фильтрация