Skip to content

Latest commit

 

History

History
44 lines (31 loc) · 1.89 KB

File metadata and controls

44 lines (31 loc) · 1.89 KB

Тестовое задание: Поисковик по текстам документов

Простой REST API для полнотекстового поиска документов.

Стек: FastAPI, SQLAlchemy 2.0 (asyncpg), PostgreSQL 16, Elasticsearch 8, Pydantic, Docker, Pytest.

Запуск проекта

  1. Переименуйте .env.example в .env:

    cp .env.example .env
  2. Поднимите контейнеры:

    docker compose up -d --build

    (При первом запуске автоматически создадутся основная и тестовая базы данных).

  3. Загрузите тестовые данные из data/posts.csv в базу и индекс:

    docker compose exec api python -m scripts.load_data

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

После запуска интерактивная документация (Swagger) доступна по адресу: http://localhost:8000/docs

Файл OpenAPI (docs.json) можно сгенерировать командой:

docker compose exec api python -m scripts.export_docs

Тестирование

Тесты используют отдельную тестовую БД (search_db_test). Каждому тесту выделяется изолированная транзакция, которая откатывается после завершения, поэтому тесты работают быстро и не оставляют мусора.

docker compose exec api pytest -v

P.S.

Проект намеренно не перегружен слоистой архитектурой (Repository / Service / Router) во избежание оверинжиниринга. Логика работы двух эндпоинтов лаконично умещается в роутере