Перед запуском необходимо обновить .env под свои нужды, для докера можно не трогать
docker-compose up
- БД скрыта от внешних запросов, взаимодействует только с приложением, по умолчанию порт контейнера стоит 5432
- Приложение поднимается на http://localhost:8000, порт по необходимости можно изменить в docker-compose файле
- Тестировать эндпойнт можно здесь http://localhost:8000/docs (Swagger)
- Настроить пустую бд, без таблиц
- Указать всё необходимоe в .env
- Установить окружение можно либо:
pip install -r requirements.txt
либо:
poetry install
- Если необходимо включить логи, это можно сделать в app/settings, в классе AppDescriptions необходимо установить флаг debug=True
- Накатить миграции
alembic upgrade head
- При необходимости можно прогнать тесты (в докере они прогоняются при запуске контейнера)
- Запустить приложение командой
uvicorn app.main:app
- Повторить п2 п3 из Установка с докером
- sqlalchemy
- alembic
- pydantic
- fastapi
- loguru
- docker
- postgresql
Не очень понял следующие пункты задания:
- Необходимо возвращать последний вопрос или предпоследний (выбрал предпоследний)
- Повторная подгрузка вопросов, если предыдущий вопрос уже есть в БД (как то противоречит с 1м пунктом)
По итогу сделал так:
- Грузится questions_num вопросов, если есть повторяющиеся, повторяем до тех пор пока не сохраним в кол-ве questions_num
- Возвращается предпоследний вопрос (а он по условию задачи может быть пустым), даже несмотря на то, что questions_num большой. Соответсвенно, если Вы передаете questions_num = 5, то Вам вернется 4й сохраненный вопрос (при условии что повторений не было). А если они были, то соответсвенно предпоследний из {questions_num + кол-во ошибок} вопросов которые мы подгружали.
заменить установку apt-get -y install libpq-dev gcc в докерфайле, слишком сильно увеличивает образ, но необходимая мера, т к psycopg2 не хотел искать конфиг. Как вариант поставить psycopg-binary?