Skip to content

katafoxi/game_and_players_AlfaLine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

О проекте

Проект, на котором подключены FastAPI и Django одновременно. Django используется только как ORM и админка, FastAPI используется для запросов.

База данных игроков и игр. В игре может быть не более 5 игроков. Игроки и игры создаются при помощи API-вызовов с применением аутентификации по методу JWT(OpenAPI-документация доступна по запросу на http://localhost:8000/docs).


Используемый стек

  1. Django.
  2. FastAPI.

Запуск контейнеров

Поднять всю инфраструктуру проекта по http://localhost:8000/.

docker-compose docker-compose up -d

Правки применяются автоматически(благодаря --reload(command в docker-compose), файлы внутри контейнеров и на локальной машине синхронизированы через volumes(docker-compose).

Внутрь контейнера с python можно попасть, используя команды:

docker ps #отобразит список всех контейнеров
docker exec -ti <container_id> bash #войдет в запущенный контейнер для выполнения команд, например - создания superuser

Для генерации токена доступа к API:

export TOKEN="$( curl -H "Content-Type: application/json" -X POST \
-d '{"username":"test","password":"test"}' http://localhost:8000/login | \
py -c "import sys, json; print(json.load(sys.stdin)['access_token'])" )"

К curl-запросам необходимо добавлять заголовок авторизации:

-H "Authorization: Bearer $TOKEN"


Задачи

Django.

  1. Отобразить в списке игроков: имя, email, дату и время создания игрока, дату и время изменения игрока(в нашем случае только через админку);
  2. добавить поиск по имени или email.
  3. Отобразить в списке игр название игры и имена игроков через запятую(отдельным столбцом), дату и время создания игры, дату и время изменения игры.
  4. На странице редактирования игры отобразить inline'ами всех привязанных игроков.

FastAPI, валидация, транзакции.

  1. При создании игрока(/new_player) его имя и email должны быть уникальны.
  2. Имя должно содержать только цифры от 0 до 9 и только буквы от a до f.
  3. Если пользователь с таким email и name уже существует, необходимо вернуть ошибку с HTTP-кодом 400, status = "error", текстом "player with such name or email already exists".
  4. Аналогичную ошибку необходимо вернуть при ошибке валидации имени пользователя или e-mail'а с указанием соответствующего текста ошибки.
  5. Реализовать логику для метода /add_player_to_game
  6. Можно ли получить 500 ошибку при отправке данных, величина которых не предусмотрена БД? (валидация данных)

Работа с ManyToMany Django ORM, валидацией FastAPI.

  1. при запросе игрок с указанным id должен добавляться в игру с указанным id.
  2. Если игрока или игры с заданными id не существует, должна возвращаться ошибка с HTTP-кодом 400, status = "error" и соответствующим текстом.
  3. Количество игроков одной игре не более 5.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published