В этом проекте реализована простая поисковая система по текстам документов.
Данные хранятся в БД PostgreSQL, поисковый индекс в ElasticSearch.
Проект выполнен с помощью FastAPI и Gino и работает асинхронно.
Ссылка на тестовый массив данных: [csv]
Проверьте, что в системе установлены Docker и Docker-compose. После введите команду:
docker-compose up --build -d
Она запустит три контейнера — приложение FastAPI, Elasticsearch и PostgreSQL.
Ссылка может быть доступна не сразу, нужно немного времени, чтобы заполнить БД :)
После этого сервис будет доступен по ссылке 127.0.0.1:8080.
Все методы описаны в документации OpenAPI Swagger, которая откроется на главной странице.
-
Убедитесь, что PostgreSQL и Elasticsearch запущены.
-
Создайте virtual env и установите зависимости:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
- Создайте БД с нзванием
documentsи запустите скрипт из корня проекта для заполнения БД постами:
alembic upgrade head
python populate.py
- Запустите сервер:
python main.py
# или
uvicorn main:app --host 127.0.0.1 --port 8080
Сервис будет доступен по ссылке 127.0.0.1:8080.
src
├── api - Список эндпоинтов.
└── store - Конфигурация БД и индекса, модели данных.
main.py - Входная точка приложения FastAPI.
populate.py - Скрипт для заполнения БД и индекса данными.
Запуск тестов:
pytest -v
Анализ покрытия тестами:
pytest --cov-report term --cov=src tests/