Archived
1
0
API для работы с запросами тестового задания Mindbox https://mindbox.cebotari.ru/
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.
Go to file
2023-11-14 15:49:30 +03:00
.vscode Initial commit 2023-11-14 09:45:37 +03:00
MindBoxApi Add POST methods 2023-11-14 12:00:20 +03:00
.gitignore Initial commit 2023-11-14 09:45:37 +03:00
Dockerfile Add Docker support 2023-11-14 14:14:42 +03:00
MindBoxApi.sln Add Docker support 2023-11-14 14:14:42 +03:00
README.md Update README.md 2023-11-14 15:49:30 +03:00

API

Для работы с тестовой базой данных для задания собрано минимальное API. БД SQLite, работает без ORM через библиотеку Microsoft.Data.Sqlite. Приложение собрано в Docker-образ и развернуто по адресу https://mindbox.cebotari.ru/

База данных

  • Таблица со списком категорий
CREATE TABLE categories(
    category_id INT NOT NULL PRIMARY KEY,
    category_name VARCHAR(10) 
);
  • Таблица со списком продуктов
CREATE TABLE products(
    product_id INT NOT NULL PRIMARY KEY,
    product_name VARCHAR(10) 
);
  • Таблица товара с категориями
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)
);

Выбор пар "Имя продукта - Имя категории"

Запрос

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;
Invoke-RestMethod https://mindbox.cebotari.ru/item -Method GET
productName categoryName
----------- ------------
Apple       Red
Apple       Green
Cucumber    Green
Eggplant
Olives      Black
Tomato      Red

Дополнительно реализовано

  • Вывод списка продуктов
Invoke-RestMethod https://mindbox.cebotari.ru/product -Method GET
id name
-- ----
 1 Apple
 2 Cucumber
 3 Tomato
 4 Eggplant
 5 Olives
  • Добавление нового продукта
Invoke-RestMethod https://mindbox.cebotari.ru/product -Method POST -Body (@{Id=5;  Name="Olives"} | ConvertTo-Json) -ContentType "application/json"
  • Вывод списка категорий
Invoke-RestMethod https://mindbox.cebotari.ru/category -Method GET
id name
-- ----
 1 Red
 2 Green
 3 Yellow
 4 Magenta
 5 Black
  • Добавление новой категории
Invoke-RestMethod https://mindbox.cebotari.ru/category -Method POST -Body (@{Id=5;  Name="Black"} | ConvertTo-Json) -ContentType "application/json"
  • Добавление нового товара
Invoke-RestMethod -Uri "https://mindbox.cebotari.ru/item?productId=5&categoryId=5" -Method POST