Цель тестового задания - разработать API для приложения знакомств. Ваша задача - создать два основных эндпоинта: user
и match
.
-
GET /users
: Возвращает список всех пользователей. Должен поддерживать сортировку поusername
,email
, и фильтрацию поage
иlocation
.Ответ:
{ "users": [ { "id": 1, "username": "user1", "email": "[email protected]", "age": 25, "location": "Moscow" }, { "id": 2, "username": "user2", "email": "[email protected]", "age": 28, "location": "St. Petersburg" } ] }
-
POST /users
: Создает нового пользователя. Принимает JSON с полямиusername
,email
,password
,age
,location
.Запрос:
{ "username": "newuser", "email": "[email protected]", "password": "securepassword", "age": 30, "location": "Kazan" }
Ответ:
{ "id": 3, "username": "newuser", "email": "[email protected]", "age": 30, "location": "Kazan" }
-
GET /users/{user_id}
: Возвращает детали пользователя по ID.Ответ:
{ "id": 1, "username": "user1", "email": "[email protected]", "age": 25, "location": "Moscow" }
-
PUT /users/{user_id}
: Обновляет детали пользователя по ID.Запрос:
{ "username": "updateduser", "email": "[email protected]", "age": 31, "location": "Ufa" }
Ответ:
{ "id": 1, "username": "updateduser", "email": "[email protected]", "age": 31, "location": "Ufa" }
-
DELETE /users/{user_id}
: Удаляет пользователя по ID.Ответ:
{ "message": "User successfully deleted" }
-
GET /matches
: Возвращает список всех совпадений (пар пользователей). Поддерживает сортировку по дате совпадения.Ответ:
{ "matches": [ { "id": 1, "user1_id": 1, "user2_id": 2, "match_date": "2023-07-05" }, { "id": 2, "user1_id": 1, "user2_id": 3, "match_date": "2023-07-06" } ] }
-
POST /matches
: Создает новое совпадение. Принимает JSON с полямиuser1_id
,user2_id
.Запрос:
{ "user1_id": 1, "user2_id": 3 }
Ответ:
{ "id": 3, "user1_id": 1, "user2_id": 3, "match_date": "2023-07-07" }
-
DELETE /matches/{match_id}
: Удаляет совпадение по ID.Ответ:
{ "message": "Match successfully deleted" }
- Используйте FastAPI для создания веб-сервера.
- SQLAlchemy для работы с базой данных.
- Создайте модели данных для SQLAlchemy с использованием алхимического ORM.
- Создайте аутентификацию и авторизацию для эндпоинтов.
- Напишите тесты для каждого эндпоинта.
- Реализуйте обработку ошибок.
- Реализуйте фильтрацию и сортировку для соответствующих эндпоинтов.
- Создайте Dockerfile для контейнеризации приложения.
- Напишите документацию с помощью Swagger.
- Реализуйте автоматическое развертывание и тестирование с использованием CI/CD.(Можно использовать Vercel, Heroku или любой другой удобный для вас сервис.)