170 похожих чатов

Друзья, пытаюсь перейти на данный темплейт для написания телеграмм ботов Я

не совсем могу понять как мне правильно в хендлеры передавать информацию из баз данных, и при этом сохранить принципы ООП?
В файле bot.py в объект бота передаётся конфиг собранный из датаклассов. В models я написал своеобразный модуль для подключения к безе данных - класс в который нужно передать данные для аутентификации. Но получается чтобы создать объект подключения мне нужно импортировать объект бота в хендлеры, из чего выходит циркулирующий импорт. Я чёт запутался, скучаю по временам когда можно было писать говнокод и не париться(

Получается раньше я мог сделать users_tables = UsersTables(db_auth) прямо в модуле с хендлерами где UsersTables объект подключения к базе данных, и начать выполнять запросы в бд и получать ответы пользуясь функциями класса. Сейчас же для того чтобы так поступить мне нужно получать конфиг из config.load_config('env') в этой части репозитория, что мне кажется костыльным, так как конфиг в темплейте собирается в bot.py и передаётся в объект бота, вот здесь.

29 ответов

21 просмотр

эээ я чет запутался

> Но получается чтобы создать объект подключения мне нужно импортировать объект бота в хендлеры нет. Чтобы создать объект подключения тебе нужен конфиг подклчения. > в объект бота передаётся конфиг собранный из датаклассов. плохая идея. конфиг должен передаваться частями туда куда надо напрямую без каких-то божественных хранилищ конфигов

m-dar Автор вопроса

То есть не будет костыльным, если я буду использовать config.load_config('env') везде где мне заблагоразумится?

m-dar Автор вопроса
m dar
То есть не будет костыльным, если я буду использов...

Ну да, впринципе понял, я чёт из мухи слона раздул

m dar
То есть не будет костыльным, если я буду использов...

я сказал передавать нужные части куда надо, а не грузить везде заново

m-dar Автор вопроса
Tishka17
я сказал передавать нужные части куда надо, а не г...

Если ты имеешь ввиду что нужно грузить конфиг максимум в каждом модуле, а не в каждой функции, то это я понимаю

m dar
Если ты имеешь ввиду что нужно грузить конфиг макс...

нет, максимум в мейн функции или тестах

m-dar Автор вопроса
Tishka17
нет, максимум в мейн функции или тестах

тогда я все ещё не понимаю как мне пользоваться конфигом из мейна, и при этом не ловить циркулирующий импорт. и вопрос отсаётся тот же что и был

m dar
тогда я все ещё не понимаю как мне пользоваться ко...

https://github.com/Tishka17/tgbot_template/blob/master/tgbot/middlewares/db.py у меня вот так сделано

в смысле? ты передал параметры коннекта в мидлварь, таким образом они ни очем не знает больше и умеет создавать коннекты. затем эти коннекты прилетают в репо/хэндлер который может их юзать

m-dar Автор вопроса
Tishka17
в смысле? ты передал параметры коннекта в мидлварь...

то есть в каждом хенделе я могу получать данные для коннекта и работать таким образом? async def admin_start(message: Message, data): await message.reply("Hello, admin!") users_tables = models.UsersTables(data.db.database, data.db.tables, data.db.auth) await users_tables.new_user("1234", "da")

m-dar Автор вопроса
Tishka17
шта

Ты сам говоришь миддлварь передаёт данные для коннекта в хендлер

m-dar Автор вопроса
Tishka17
что за data.db.database, data.db.tables, data.db.a...

@dataclass class DbConfig: host: str password: str user: str database: str tables: list auth: dict

m dar
Ты сам говоришь миддлварь передаёт данные для конн...

что за users_tables - почему таблицы юзеров тебе прилетают из мидлвари?

m dar
@dataclass class DbConfig: host: str passw...

что он делает в хэндлере

m-dar Автор вопроса
Tishka17
что за users_tables - почему таблицы юзеров тебе п...

users_tables это объект соединения с базой данных с методами работы с определённым таблицами

m dar
users_tables это объект соединения с базой данных ...

users_tables - это "таблицы пользвоателей", назови нормально

m dar
users_tables это объект соединения с базой данных ...

я тебе дал ссылку на мой шаблон, ты посмотрел?

m-dar Автор вопроса
Tishka17
я тебе дал ссылку на мой шаблон, ты посмотрел?

Там вроде как нет примера работы с базой данных

m-dar Автор вопроса

Миддлварь который я не понял как работает, но явно не как коннектор с бд?

m dar
Миддлварь который я не понял как работает, но явно...

мидлварь тупо создает нужные для хэндлеров объекты

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта