Выполненное тестовое задание компании Effective-Mobile по созданию WEB приложения с основным CRUD функционалом.
Стек: FastAPI, PostgreSQL, SQLAlchemy, Alembic, Redis, Docker, Pytest, Asyncio
Что сделал:
- Реализация по заданию основных CRUD ручек модели Book
- Кэширование получения всех книг
- Unit тестирование и Интеграционное через pytest, а также с помощью библиотеки syrupy
- Контейнеризация
- Обработка ошибок
- Внедрение зависимостей
- Настроил pre-commit-file c хуками
- Запуск приложения на 4-ых gunicorn workers
Слои приложения:
- Handler - Принимаем запрос от пользователя и возвращаем его, дергая Service слой
- Service layer - Содержит основную бизнес логику и взаимодействует с классами Repository/CacheRepository
- Repository - Выполняет СRUD операции, промежуточный слой между БД и Бизнес логикой
- ORM model
Для запуска достаточно иметь Docker, склонировать репозиторий, настроить интерпретатор и ввести docker-compose up и проверяем результат по ссылке http://localhost:8000/docs (swagger документация)
.env файл открыт для тестовых целей