Используя Python3, FastAPI, SQLAlchemy написать:
Необходимо реализовать следующие endpoint:
-
POST
/newСохраняет запись в базу данных и присваивает ей уникальный идентификатор uuid. Пример тела запроса:
[ {"uuid": "e48d41d0-6e53-490a-9d9a-fd4337f28038", "text": "test example"}, {"uuid": "eddd8cd7-1128-4b83-98d4-7cde1514625e", "text": "another example"}, {"uuid": "0e3d1382-1d3b-4c6a-9f86-be258627b010", "text": "super another example"} ] -
GET
/allОтдаёт все добавленные записи, пример тела ответа:
[ {"uuid": "e48d41d0-6e53-490a-9d9a-fd4337f28038", "text": "test example"}, {"uuid": "eddd8cd7-1128-4b83-98d4-7cde1514625e", "text": "another example"}, {"uuid": "0e3d1382-1d3b-4c6a-9f86-be258627b010", "text": "super another example"} ] -
GET
/<uuid>Отдаёт конкретную запись по запрошенному uuid. Пример успешного ответа:
{"uuid": "e48d41d0-6e53-490a-9d9a-fd4337f28038", "text": "test example"} -
GET
/<count>Отдаёт запрошенное в count количество записей. Пример успешного ответа:
[ {"uuid": "e48d41d0-6e53-490a-9d9a-fd4337f28038", "text": "test example"}, {"uuid": "eddd8cd7-1128-4b83-98d4-7cde1514625e", "text": "another example"} ] -
GET
/<count>/<offset>Отдаёт запрошенное в count количество записей начиная с переданного offset. Пример успешного ответа:
[ {"uuid": "eddd8cd7-1128-4b83-98d4-7cde1514625e", "text": "another example"}, {"uuid": "0e3d1382-1d3b-4c6a-9f86-be258627b010", "text": "super another example"} ] -
GET
/by_filtersОтдаёт все данные найденные по фильтрам. Фильтрация должна происходить по дате и времени создания записи. Пример успешного ответа:
[ {"uuid": "e48d41d0-6e53-490a-9d9a-fd4337f28038", "text": "test example"}, {"uuid": "0e3d1382-1d3b-4c6a-9f86-be258627b010", "text": "super another example"} ] -
PUT
/update/<uuid>Изменяет тело записи по запрошенному uuid.
-
DELETE
/<uuid>Удаляет запись по запрошенному uuid из базы.
Запускается вместе с первым и постоянно генерирует случайное количество (от 10 до 100) случайных строк (буквы-цифры, 16 символов) для вставки в базу первого сервиса по API.
Одновременно с этим приложение постоянно запрашивает по API по 10 строк и удаляет их, раз в 10 секунд в стандартный поток вывода необходимо печать количество удалённых записей.
- Базу данных использовать PostgreSQL
- Обеспечить запуск через "docker compose up"
- Придумайте как использовать Redis для кеширвоания.