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

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

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

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

29 ответов

19 просмотров

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

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

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
Миддлварь который я не понял как работает, но явно...

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

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта