Skip to content

Latest commit

 

History

History
89 lines (66 loc) · 3.93 KB

File metadata and controls

89 lines (66 loc) · 3.93 KB

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

Используя 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 для кеширвоания.