rearrange mod file structure
This commit is contained in:
parent
e8245413ab
commit
b70bdde318
7 changed files with 60 additions and 39 deletions
|
|
@ -1,4 +1,2 @@
|
|||
pub mod bot;
|
||||
pub mod log;
|
||||
pub mod sanitize;
|
||||
pub mod util;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
use anyhow;
|
||||
use sqlx::migrate::MigrateDatabase;
|
||||
use sqlx::{Sqlite, SqlitePool};
|
||||
use sqlx::SqlitePool;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
use std::str;
|
||||
|
|
@ -13,9 +12,6 @@ use teloxide::types::InputFile;
|
|||
use teloxide::{prelude::*, update_listeners::Polling, utils::command::BotCommands};
|
||||
use tracing::{event, Level};
|
||||
|
||||
use super::log::log_init;
|
||||
use super::util::make_database_url;
|
||||
|
||||
use crate::dl::delete_if_exists;
|
||||
use crate::dl::download;
|
||||
|
||||
|
|
@ -38,19 +34,10 @@ where
|
|||
.expect(format!("env '{}' parse error", name).as_str())
|
||||
}
|
||||
|
||||
pub async fn bot_main() -> anyhow::Result<()> {
|
||||
log_init();
|
||||
pub async fn bot_main(db: SqlitePool) -> anyhow::Result<()> {
|
||||
event!(Level::INFO, "start");
|
||||
|
||||
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?;
|
||||
sqlx::migrate!().run(&db).await?;
|
||||
// db_init
|
||||
|
||||
let bot = Bot::new(env::var("BOT_TOKEN")?);
|
||||
let listener = Polling::builder(bot.clone())
|
||||
|
|
@ -104,7 +91,7 @@ struct DbUser {
|
|||
pub first_name: String,
|
||||
pub last_name: Option<String>,
|
||||
pub can_download: i64,
|
||||
pub is_admin: i64
|
||||
pub is_admin: i64,
|
||||
}
|
||||
|
||||
async fn cmd_test(bot: Bot, msg: Message, db: SqlitePool) -> HandlerResult {
|
||||
|
|
@ -112,21 +99,25 @@ async fn cmd_test(bot: Bot, msg: Message, db: SqlitePool) -> HandlerResult {
|
|||
|
||||
let user = msg.from().unwrap();
|
||||
|
||||
let conn = db.acquire().await?;
|
||||
sqlx::query("INSERT OR IGNORE user
|
||||
(tg_id, user_name, first_name, last_name, can_download, is_admin)
|
||||
VALUES ($1, $2, $3, $4, $5, $6);")
|
||||
sqlx::query(
|
||||
"INSERT OR IGNORE INTO user
|
||||
(tg_id, username, first_name, last_name, can_download, is_admin)
|
||||
VALUES ($1, $2, $3, $4, $5, $6);",
|
||||
)
|
||||
.bind(user.id.0 as i64)
|
||||
.bind(&user.username)
|
||||
.bind(&user.first_name)
|
||||
.bind(&user.last_name)
|
||||
.bind(0)
|
||||
.bind(0)
|
||||
.execute(&db).await.expect("insert");
|
||||
.execute(&db)
|
||||
.await
|
||||
.expect("insert");
|
||||
|
||||
let db_user = sqlx::query_as!(DbUser,
|
||||
"SELECT * FROM user WHERE id = 1 LIMIT 1;")
|
||||
.fetch_one(&db).await.expect("fetch_one");
|
||||
let db_user = sqlx::query_as!(DbUser, "SELECT * FROM user WHERE id = 1 LIMIT 1;")
|
||||
.fetch_one(&db)
|
||||
.await
|
||||
.expect("fetch_one");
|
||||
dbg!(db_user);
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
18
src/db.rs
Normal file
18
src/db.rs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
use sqlx::migrate::MigrateDatabase;
|
||||
use sqlx::{Sqlite, SqlitePool};
|
||||
|
||||
use super::util::make_database_url;
|
||||
|
||||
pub async fn db_init() -> SqlitePool {
|
||||
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.unwrap();
|
||||
sqlx::migrate!().run(&db).await.unwrap();
|
||||
|
||||
db
|
||||
}
|
||||
|
|
@ -1,14 +1,18 @@
|
|||
use std::io;
|
||||
use tracing::{level_filters::LevelFilter, Subscriber};
|
||||
//use tracing_appender::rolling::{RollingFileAppender, Rotation};
|
||||
use tracing_subscriber::{fmt, layer::SubscriberExt, layer::Filter, prelude::*};
|
||||
use tracing_subscriber::{fmt, layer::Filter, layer::SubscriberExt, prelude::*};
|
||||
|
||||
//use super::util::VAR_LOG;
|
||||
|
||||
// A layer filter to prevent polling timeout errors from clogging logs
|
||||
struct TeloxideNoiseFilter {}
|
||||
impl<S: Subscriber> Filter<S> for TeloxideNoiseFilter {
|
||||
fn enabled(&self, meta: &tracing::Metadata<'_>, _: &tracing_subscriber::layer::Context<'_,S>) -> bool {
|
||||
fn enabled(
|
||||
&self,
|
||||
meta: &tracing::Metadata<'_>,
|
||||
_: &tracing_subscriber::layer::Context<'_, S>,
|
||||
) -> bool {
|
||||
if let Some(module_path) = meta.module_path() {
|
||||
if module_path == "teloxide::error_handlers" {
|
||||
false
|
||||
|
|
@ -21,7 +25,6 @@ impl<S: Subscriber> Filter<S> for TeloxideNoiseFilter {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
const LOG_LEVEL: LevelFilter = LevelFilter::DEBUG;
|
||||
|
||||
13
src/main.rs
13
src/main.rs
|
|
@ -5,10 +5,21 @@ use bot::bot::bot_main;
|
|||
|
||||
mod dl;
|
||||
|
||||
mod util;
|
||||
|
||||
mod log;
|
||||
use log::log_init;
|
||||
|
||||
mod db;
|
||||
use db::db_init;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
dotenv().ok();
|
||||
|
||||
bot_main().await?;
|
||||
log_init();
|
||||
let db = db_init().await;
|
||||
|
||||
bot_main(db).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue