From fa3eb811d8b37fd05e710a9dcf2c8cd291834985 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Mon, 26 Feb 2024 00:42:28 +0200 Subject: [PATCH] make SqlitePool a dptree dependency, so handlers would have access to database --- mk-dl-bot.db | Bin 0 -> 4096 bytes src/bot/bot.rs | 16 +++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 mk-dl-bot.db diff --git a/mk-dl-bot.db b/mk-dl-bot.db new file mode 100644 index 0000000000000000000000000000000000000000..4ebf78cf96088c7148cb47caf804cc036de75a34 GIT binary patch literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|@t|AVoG{WY8;GzzfnYK(-m98b?E5 nGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nC=3ArfDQ*E literal 0 HcmV?d00001 diff --git a/src/bot/bot.rs b/src/bot/bot.rs index 14703a5..f5cd4ed 100644 --- a/src/bot/bot.rs +++ b/src/bot/bot.rs @@ -1,4 +1,5 @@ use anyhow; +use sqlx::migrate::MigrateDatabase; use std::env; use std::fmt; use std::str; @@ -9,7 +10,7 @@ use teloxide::dispatching::dialogue::InMemStorage; use teloxide::dispatching::UpdateHandler; use teloxide::types::InputFile; use teloxide::{prelude::*, update_listeners::Polling, utils::command::BotCommands}; -use sqlx::SqlitePool; +use sqlx::{Sqlite, SqlitePool}; use super::util::make_database_url; @@ -36,8 +37,12 @@ where } pub async fn bot_main() -> anyhow::Result<()> { - let db_path = make_database_url(); - let db = SqlitePool::connect(&db_path).await?; + let db_url = make_database_url(); + if !Sqlite::database_exists(&db_url).await.unwrap_or(false) { + Sqlite::create_database(&db_url).await.expect("failed to create database"); + } + + let db = SqlitePool::connect(&db_url).await?; let bot = Bot::new(env::var("BOT_TOKEN")?); let listener = Polling::builder(bot.clone()) @@ -47,7 +52,7 @@ pub async fn bot_main() -> anyhow::Result<()> { .build(); Dispatcher::builder(bot, schema()) - .dependencies(dptree::deps![db]) + .dependencies(dptree::deps![db, InMemStorage::::new()]) .enable_ctrlc_handler() .build() .dispatch_with_listener( @@ -83,7 +88,8 @@ enum Command { Download(String), } -async fn cmd_test(bot: Bot, msg: Message) -> HandlerResult { +async fn cmd_test(bot: Bot, msg: Message, db: SqlitePool) -> HandlerResult { + dbg!(db); bot.send_message(msg.chat.id, "test response").await?; Ok(())