Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/swimmwatch/road-to-the-python-assignment-1
Road to the Python Assignment
https://github.com/swimmwatch/road-to-the-python-assignment-1
Last synced: 11 days ago
JSON representation
Road to the Python Assignment
- Host: GitHub
- URL: https://github.com/swimmwatch/road-to-the-python-assignment-1
- Owner: swimmwatch
- Created: 2024-01-06T19:33:39.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-01-19T20:54:14.000Z (10 months ago)
- Last Synced: 2024-01-19T22:01:37.106Z (10 months ago)
- Size: 73.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# road-to-the-python-assignment-1
Необходимо разработать HTTP REST API для ведения учета питомцев (собак, кошек, и т.д).
## Требования
- Результат задания нужно залить ввиде PR.
- Написать к нему README ввиде комментария в PR (инструкция по запуску, замечания и т.д.)### Опционально
- Автотесты
- Линтеры## Технологии
Требуется использовать следующие технологии:
- Python
- FastAPI
- PostgreSQL
- S3 (minio)
- Docker (docker-compose)
- Swagger## Модели
**Питомец:**
- ID.
- Дата создания
- Дата обновления
- Фотографии.
- Имя
- Мин. кол-во символов `3`.
- Макс. кол-во символов `28`.
- Во́зраст (кол-во лет).
- Дата рождения
- Мин. дата `01.01.1900`.
- Дата смерти
- Опциональное поле
- Тип (кошка, собака и т.д)
- Пол
- Описание
- Мин. кол-во символов `0`.
- Макс. кол-во символов `1024`.**Фотография:**
- ID.
- Дата создания
- Ссылка## Описание API
### API Key Authentication
- В конфиге проекта нужно добавить параметр `API_KEY`
- Все обработчики запросов должны принимать header `X-API-KEY`
- Переданный `X-API-KEY` сравнивается с эталонным `API_KEY`### Функционал
- Создание записи питомца. **Примечание:** при создании записи питомца не нужно указывать фотограции;
- Загрузить фотографию питомца. Поддерживаются следующие форматы фотографий: `png`, `jpeg`, `webp`. При загрузке файлов, сами файлы нужно конвертировать в один формат (например, `jpeg`);
- Получение детальной запись питомца по ID;
- Удаление фотографии питомца по ID;
- Получение списка питомцев. Нужно реализовать:
- Поиск. Включение подстроки в строку. Игнорировать регистр. Поля:
- Имя
- Описание
- Фильтрация:
- Возраст `>=`
- Возраст `<=`
- Пагинация (limit/offset)
- Сортировка:
- Дата создания
- Возраст
- Редактирование записи питомца по ID. Поля, которые можно редактировать:
- Имя
- Дата рождения
- Дата смерти
- Описание