Skip to content

MaxBakshaev/FastAPI-QA-Service

Repository files navigation

Тестовое задание: API-сервис для вопросов и ответов.

📖 Проект реализует REST API для создания и управления вопросами и ответами пользователей на вопросы. Нельзя создать ответ к несуществующему вопросу. Один и тот же пользователь может оставлять несколько ответов на один вопрос. При удалении вопроса удаляются все его ответы (каскадно).

⚙️ Функциональность

🔸 Вопросы (Questions)

  • GET /questions/ — список всех вопросов
  • POST /questions/ — создать новый вопрос
  • GET /questions/{question_id} — получить вопрос и все ответы на него
  • DELETE /questions/{question_id} — удалить вопрос (вместе с ответами)

🔸 Ответы (Answers)

  • POST /questions/{question_id}/answers/ — добавить ответ к вопросу
  • GET /answers/{answer_id} — получить конкретный ответ
  • DELETE /answers/{answer_id} — удалить ответ

🛠️ Используемые технологии

  • ⚡ FastAPI

  • 🐘 PostgreSQL

  • 🔁 SQLAlchemy + Async ORM

  • 📄 Alembic миграции

  • 🐳 Docker/Docker Compose

  • 🧪 Pytest

  • 🔧 Pydantic

🐳 Установка и запуск с Docker:

🔹 1. Клонируйте репозиторий и перейдите в директорию проекта:

git clone https://github.com/MaxBakshaev/FastAPI-QA-Service.git
cd FastAPI-QA-Service

🔹 2. Создайте файлы окружения:

Для Linux или macOS:

mkdir -p app && touch app/.env app/.env.postgres

Для Windows:

type nul > app\.env
type nul > app\.env.postgres

🔹 3. Настройте файл app/.env:

3.1. Добавьте переменные окружения:

APP_CONFIG__DB__URL=postgresql+asyncpg://user:pwd@postgres-qa-service:5432/DBname
APP_CONFIG__DB__ECHO=1

3.2. ✏️ Замените в APP_CONFIG__DB__URL:

  • user — имя пользователя БД
  • pwd — пароль
  • DBname — название БД

🔹 4. Настройте файл app/.env.postgres:

4.1. Добавьте переменные окружения с вашими данными:

POSTGRES_USER=ваше_имя_пользователя
POSTGRES_PASSWORD=ваш_пароль
POSTGRES_DB=ваше_название_БД

🔹 5. Запуск контейнеров:

Убедитесь, что Docker Desktop запущен. Затем создайте и запустите докер контейнер:

make up

Остановить:

make stop

Очистить контейнеры, сети, тома и образы:

make clean
  • 📄 Дополнительные команды смотрите в Makefile.

🔹 6. Откройте в браузере:

🔹 7. 🧪 Запуск тестов:

make test

About

Тестовое задание: API-сервис для вопросов и ответов

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published