Проект для загрузки и просмотра книг, информация о которых хранится в Postgres, а файлы в S3.
Выполнен по методологиям TDD и DDD.
Скелет юнит тестами не покрыт, но покрыты все API. (pytest)
Для локальной разработки и тестирования используйте docker-compose.
Тесты предполагают поднятие database и s3 + совершение миграций.
- Домен:
- Book: # Книга
- Сущности:
- BookAuthorDeniedList # Серый список Авторов книг (Серый список - перечень запрещенных к загрузке книг)
- BookNameDeniedList # Серый список Названий книг
- Объекты ценности:
- BookName # Название произведения
- BookAuthor # Автор произведения
- BookGenre # Жанр
- Сущности:
- Book: # Книга
- Инфраструктура:
- S3 # для хранения файлов, поддерживается транзакционность
- SQLAlchemy (Postgres) # для хранения данных, поддерживается транзакционность
- Сервис:
- Создать книгу
- Почитать книгу
- Получить список книг
- Дополнить серый список
- Точка входа:
- Веб-сервер (AioHTTP)
- POST /api/v1/books # Требует передать данные в виде формы с файлом для создания книги
- GET /api/v1/books/{pk} # Выдать по идентификатору информацию по книге и ссылку для скачивания
- GET /api/v1/books # Выдать список объектов, создержащих данные книг. Поддерживает фильтры и пагинацию
- POST /api/v1/books/denied_list/populate # Требует передать Excel файл для дополнения серого списка
- Веб-сервер (AioHTTP)
Для управления проектом используйте MakeFile.