-
Клонируем проект
git clone https://github.com/skorikovdo/book_read_project.git
-
Собираем докер образ
docker build -t flask book_read_project/
-
Запускаем контейнер
docker run -p 5000:5000 flask
/create-book - POST запрос, чтобы сохранить новую прочитанную книгу. В теле запроса хранится JSON с информацией о прочитанной книге вида:
{
"book_name": "Book Name",
"author": "Autor Name",
"rating": "Rating numbeer",
"date": "Date in format %Y-%m-%d %H:%M:%S"
}
Возвращает JSON созданной сущности, и ссылку на нее в заголовке Location.
/get-books - GET запрос, позволяет получить список всех книг, возвращает JSON вида:
{
"data": [
"id": int,
"book_name": str,
"author": str,
"rating": int,
"date": str in format %Y-%m-%d %H:%M:%S
],
}
get-books/ GET запрос, позволяет получить книгу по id. Так же при создании книги возвращается ссылка на созданную книгу в заголовке Location.
/update-book/ PATCH запрос, позволяет обновить рэйтинг книгу по id. В теле запроса посылается JSON вида:
{
"rating": int
}
Возвращает JSON обновленной сущности.
delete-book/ Удаляет сущность книги по id
/get-trash GET запрос возвращает JSON всех удаленных сущностей книг вида:
{
"data": [
{
"id": int,
"book_id": int,
"book_name": str,
"author": str,
"rating": int,
"date": str in format %Y-%m-%d %H:%M:%S
}
]
}
Изначально удаление планировалось реализовать через триггер, но миграция не переносит триггер. Так же можно было реалтзовать через метод PATCH добавив в таблицу колонту isDeleted и меня на True, но тогда бы пришлось добавлять дополнительные обработчики на методы GET. Сейчас реализовано путем вставки удаляемой сущности в другую таблицу и последнующее удаление из основной таблицы. Так же, касаемо пункта 2 Технического задания. База была взяла sqllite3, но на продакшене ее нельзя использовать. Выбор базы был только за счет того, чтобы быстро набросать прототип.