Skip to content

skorikovdo/book_read_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

book_read_project

Разворачивание проекта
  1. Клонируем проект

     git clone https://github.com/skorikovdo/book_read_project.git
    
  2. Собираем докер образ

     docker build -t flask book_read_project/
    
  3. Запускаем контейнер

     docker run -p 5000:5000 flask
    
API

/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, но на продакшене ее нельзя использовать. Выбор базы был только за счет того, чтобы быстро набросать прототип.

About

Тестовое задание Константа

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published