Skip to content

IlyaBag/kitten-show

Repository files navigation

Тестовое задание для Workmate

Описание

Приложение представляет собой REST API сервис для онлайн выставки котят и предоставляет стандартный набор CRUD-операций для работы с базой данных.

Используемые сущности

  • Котёнок
    • id: int
    • color: str - цвет котёнка
    • age: int - возраст котёнка в месяцах
    • description: str | None - описание котёнка (необязательный параметр)
    • breed_id: int - id породы котёнка (в базе данных является внешним ключом)
  • Порода
    • id: int
    • name: str - название породы

Endpoints

Сервис предоставляет следующие эндпоинты:

  • 'GET' /api/v1/breeds — получить список всех пород с их id
  • 'GET' /api/v1/kittens[&filter_breed_id={id}] — получить список всех котят. Позволяет указать опциональный параметр "filter_breed_id" для фильтрации списка котят по их породе
  • 'GET' /api/v1/kittens/{id} — получить информацию по конкретному котёнку
  • 'POST' /api/v1/kittens — создать новую запись о котёнке
  • 'PATCH' /api/v1/kittens/{id} — изменить запись о котёнке
  • 'DELETE' /api/v1/kittens/{id} — удалить запись о котёнке

Основные зависимости

Проект написан с использованием Python 3.12 и следующих библиотек:

  • fastapi 0.115.0
  • SQLAlchemy 2.0.35
  • asyncpg 0.29.0
  • uvicorn 0.31.0

Полный список можно посмотреть в файле requirements.txt.

Требования

Для запуска приложения потребуется Docker.

Установка с помощью Docker

  1. Клонировать репозиторий
git clone https://github.com/IlyaBag/kitten-show.git
  1. Создать файл с переменными окружения

Для этого можно переименовать файл example.env_docker в .env_docker вручную или в UNIX-подобных системах использовать команду

mv example.env_docker .env_docker

Далее нужно отредактировать файл: в параметре DB_HOST заменить символы <dir_name> на имя директории, в которую был склонирован проект, заменив все строчные символы названия прописными (проще говоря, все буквы должны быть маленькими)

  1. Запустить сервисы приложения и базы данных командой
docker compose up

Использование

После запуска приложение будет доступно локально по адресу http://127.0.0.1:8000/.

Протестировать приложение можно с помощью Swagger UI, доступного по адресу http://127.0.0.1:8000/docs