Найти в Дзене
Computer Pro

Трекер привычек. Fastapi + pyTelegramBotAPI. Добавление пользователя в БД. Часть 3

Продолжаем разговор... В предыдущей статье, я разобрал как создать модели, сделать миграции, в базе данных была создана таблица users. Теперь самое время написать логику работы приложения чтобы происходило добавление пользователя (пусть будет по выполнению команды /register). Сделаем обработчик команды /register, которая будет отправлять запрос на бэкенд для добавления нового пользователя: Запрос прилетает сюда: Где в качестве аргументов получаем асинхронную сессию и данные из запроса, которые трансформируются в словарь (dict). Формируется экземпляр модели пользователя с соответствующими параметрами и отправляется всё это богатство для добавления в базу данных. Так как поле telegram_id имеет ограничение unique=True, то дважды, пользователя с этим id, добавить в БД не получится и вернется исключение. Которое нужно соответствующим образом обработать. Результат работы выполнения запроса /register в телеграм боте: Если пытаемся добавить пользователя с тем же id, то в консоли происходит вот
Фото для карточки. Северодвинск июль 2022. Фото автора.
Фото для карточки. Северодвинск июль 2022. Фото автора.

Продолжаем разговор...

-2

В предыдущей статье, я разобрал как создать модели, сделать миграции, в базе данных была создана таблица users. Теперь самое время написать логику работы приложения чтобы происходило добавление пользователя (пусть будет по выполнению команды /register).

Сделаем обработчик команды /register, которая будет отправлять запрос на бэкенд для добавления нового пользователя:

-3

Запрос прилетает сюда:

-4

Где в качестве аргументов получаем асинхронную сессию и данные из запроса, которые трансформируются в словарь (dict). Формируется экземпляр модели пользователя с соответствующими параметрами и отправляется всё это богатство для добавления в базу данных.

-5

Так как поле telegram_id имеет ограничение unique=True, то дважды, пользователя с этим id, добавить в БД не получится и вернется исключение. Которое нужно соответствующим образом обработать.

Результат работы выполнения запроса /register в телеграм боте:

-6

Если пытаемся добавить пользователя с тем же id, то в консоли происходит вот что (консолей - две, одна телеграм, вторая - fastapi):

telegram console
telegram console
fastapi console
fastapi console

Ну вот, два пользователя уже имеется в базе данных. Надо окультуривать фронтенд-составляющую проекта, делать какие-то украшательства, кнопочки и прочие фенечки.

Об этом уже в следующей части моего повествования о разработке бота.

Слава Богу, еще один этап проекта пройден!