Archived
1
0
This repository has been archived on 2023-12-01. You can view files and clone it, but cannot push or open issues or pull requests.
MindBoxApi/README.md

89 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API
Для работы с тестовой базой данных для задания собрано минимальное API. БД SQLite, работает без ORM через библиотеку Microsoft.Data.Sqlite.
Приложение собрано в Docker-образ и развернуто по адресу <https://mindbox.cebotari.ru/>
## База данных
- Таблица со списком категорий
```sql
CREATE TABLE categories(
category_id INT NOT NULL PRIMARY KEY,
category_name VARCHAR(10)
);
```
- Таблица со списком продуктов
```sql
CREATE TABLE products(
product_id INT NOT NULL PRIMARY KEY,
product_name VARCHAR(10)
);
```
- Таблица товара с категориями
```sql
CREATE TABLE grocery_store(
product_id INT,
category_id INT,
FOREIGN KEY (product_id) REFERENCES products (product_id),
FOREIGN KEY (category_id) REFERENCES categories (category_id)
);
```
## Выбор пар "Имя продукта - Имя категории"
Запрос
```sql
SELECT product_name AS product, category_name AS category FROM products
LEFT JOIN grocery_store ON grocery_store.product_id = products.product_id
LEFT JOIN categories ON grocery_store.category_id = categories.category_id
ORDER BY product;
```
```ps
Invoke-RestMethod https://mindbox.cebotari.ru/item -Method GET
```
```
productName categoryName
----------- ------------
Apple Red
Apple Green
Cucumber Green
Eggplant
Olives Black
Tomato Red
```
## Дополнительно реализовано
- Вывод списка продуктов
```ps
Invoke-RestMethod https://mindbox.cebotari.ru/product -Method GET
```
```
id name
-- ----
1 Apple
2 Cucumber
3 Tomato
4 Eggplant
5 Olives
```
- Добавление нового продукта
```ps
Invoke-RestMethod https://mindbox.cebotari.ru/product -Method POST -Body (@{Id=5; Name="Olives"} | ConvertTo-Json) -ContentType "application/json"
```
- Вывод списка категорий
```ps
Invoke-RestMethod https://mindbox.cebotari.ru/category -Method GET
```
```
id name
-- ----
1 Red
2 Green
3 Yellow
4 Magenta
5 Black
```
- Добавление новой категории
```ps
Invoke-RestMethod https://mindbox.cebotari.ru/category -Method POST -Body (@{Id=5; Name="Black"} | ConvertTo-Json) -ContentType "application/json"
```
- Добавление нового товара
```ps
Invoke-RestMethod -Uri "https://mindbox.cebotari.ru/item?productId=5&categoryId=5" -Method POST
```