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 Normal View History

2023-11-14 15:49:30 +03:00
# API
Для работы с тестовой базой данных для задания собрано минимальное API. БД SQLite, работает без ORM через библиотеку Microsoft.Data.Sqlite.
Приложение собрано в Docker-образ и развернуто по адресу <https://mindbox.cebotari.ru/>
2023-11-14 12:00:03 +03:00
## База данных
2023-11-14 15:49:30 +03:00
- Таблица со списком категорий
2023-11-14 12:00:03 +03:00
```sql
CREATE TABLE categories(
category_id INT NOT NULL PRIMARY KEY,
category_name VARCHAR(10)
);
```
2023-11-14 15:49:30 +03:00
- Таблица со списком продуктов
2023-11-14 12:00:03 +03:00
```sql
CREATE TABLE products(
product_id INT NOT NULL PRIMARY KEY,
product_name VARCHAR(10)
);
```
2023-11-14 15:49:30 +03:00
- Таблица товара с категориями
2023-11-14 12:00:03 +03:00
```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)
);
```
2023-11-14 15:49:30 +03:00
## Выбор пар "Имя продукта - Имя категории"
2023-11-14 12:00:03 +03:00
Запрос
```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
```
2023-11-14 15:49:30 +03:00
```
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"
```
2023-11-14 12:00:03 +03:00
2023-11-14 15:49:30 +03:00
- Вывод списка категорий
2023-11-14 12:00:03 +03:00
```ps
2023-11-14 15:49:30 +03:00
Invoke-RestMethod https://mindbox.cebotari.ru/category -Method GET
```
2023-11-14 12:00:03 +03:00
```
2023-11-14 15:49:30 +03:00
id name
-- ----
1 Red
2 Green
3 Yellow
4 Magenta
5 Black
```
- Добавление новой категории
2023-11-14 12:00:03 +03:00
```ps
2023-11-14 15:49:30 +03:00
Invoke-RestMethod https://mindbox.cebotari.ru/category -Method POST -Body (@{Id=5; Name="Black"} | ConvertTo-Json) -ContentType "application/json"
2023-11-14 12:00:03 +03:00
```
2023-11-14 15:49:30 +03:00
- Добавление нового товара
2023-11-14 12:00:03 +03:00
```ps
2023-11-14 15:49:30 +03:00
Invoke-RestMethod -Uri "https://mindbox.cebotari.ru/item?productId=5&categoryId=5" -Method POST
2023-11-14 12:00:03 +03:00
```