Минимально работающее нечто создано. Теперь задача превратить это нечто в что-то. Чтобы тут были пользователи. У пользователя должен быть api_key, благодаря которому он может заходить в наш аналог твиттера. Разработчиками фронтенда предусмотрена форма для отправки этого api_key чтобы сменить пользователя:
Надеюсь я правильно понял эту тему. Что ж приступим к реализации, а там посмотрим что и как.
Как выяснилось - сменить пользователя нельзя, тут может быть только один пользователь с api_key = test, потому что роут /login выключен из фронтэнда:
Поэтому я создам пользователя, у которого в базе данных будет запись с api_key == test
Код post-эндпойнта, по созданию нового пользователя:
Который отправляет нас к операции с базой данных:
Хотя, нет, авторизация оказывается, работает
Я создал несколько пользователей через:
Вот как происходит переключение между пользователями, в зависимости от введенного api_key:
Так что это работает, осталось разобраться с "моими фолловерами" и "у кого я фолловер", потому как у меня тут [ ] (заглушка)
Подписчики и я подписчик у кого(followers и following)
Итак, методом проб и ошибок у меня "нарисовался" код для получения подписчиков, и узнать на кого я подписан. Для начала, пришлось переделать "схему" UsersMe, здесь же схема для создания нового пользователя:
После чего снова стало красиво в документации Swagger:
Если ввести api_key "lenin" в поле ввода то можно увидеть результат:
А теперь посмотрим как это работает, в коде:
Слегка изменил модель юзера, добавив туда __repr__
Это не обязательное действие, но иногда в терминале хочется видеть что в класс входит, а не безымянный объект класса такого то...
Как получить все данные, как на пользователя с api_key, так и на его подписчиков, так же на кого этот пользователь подписан:
Остается только эти данные "расшифровать" в эндпойнте /api/users/me:
Ну вот, считаю что операция по работе с пользователями закончена. Данный код, пожалуй можно слить в мастер (в моём случае, на гитхабе, это main).
Ну а на сегодня - всё!
UPD. С пользователем еще не закончено, потому как выяснилось, что у пользователя есть еще один эндпойнт "/api/users/<user_id>" и только там можно посмотреть читателей и читаемых. Значит, пока не в мастер!
UPD_2. Хотел этот эндпойнт дома доделать, но чот психанул, побыстрому слепил (crud и роут):