Procházet zdrojové kódy

Исправил трекер последнего действия пользолвателя и подчистил use

colon1al před 5 měsíci
rodič
revize
6c33a4d7e2

+ 2 - 6
api/src/lib.rs

@@ -1,12 +1,8 @@
 use poem::http::StatusCode;
-use serde_json::json;
-use orm::{prelude::*, *};
 use telegram_bot::TelegramBot;
 
-use poem::error::InternalServerError;
-use poem::web::{Data, Form, Html, Path, IntoResponse, Json};
-use poem::{handler, Result, Response};
-use serde::{Serialize, Deserialize};
+use poem::web::{Data,IntoResponse, Json};
+use poem::{handler, Response};
 use redis;
 
 use telegram_bot::telegram_types::TelegramUpdate;

+ 9 - 18
g_sheet_bot/src/main.rs

@@ -8,7 +8,7 @@ use sheets4::{Sheets, yup_oauth2, hyper_rustls, hyper_util};
 use tera::Tera;
 
 use poem::listener::TcpListener;
-use poem::{get, post, Result, Route, Server, EndpointExt};
+use poem::{post, Result, Route, Server, EndpointExt};
 use api;
 use msg_handler;
 
@@ -47,7 +47,6 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
 
     let gs_hub: Sheets<hyper_rustls::HttpsConnector<hyper_util::client::legacy::connect::HttpConnector>> = Sheets::new(client, sheets_account);
 
-
     let tg_bot = TelegramBot::new(
         bot_token, redis_client
     );
@@ -59,7 +58,7 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
         let updates = tg_bot.get_updates(last_update).await;
         debug!("Data -> | {:?} |", updates);
 
-        'handling_updates: for update in match updates {
+        for update in match updates {
             Ok(updates) => updates,
             Err(error_) => {debug!("{:?}", error_); continue 'updates_loop}
         } {
@@ -74,8 +73,6 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
             ).await;
 
             debug!("Data -> | {:?} |", update);
-
-
             // match tg_bot.send_message(
             //     update.message.chat.id, "message", None
             // ).await {
@@ -96,27 +93,24 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
 #[tokio::main]
 async fn start() -> std::io::Result<()> {
     env_logger::init();
-    // get env vars
-    //dotenvy::dotenv().ok();
+    //*Getting config from env and building apis
     let bot_token = env::var("BOT_TOKEN").expect("BOT_TOKEN is not set in .env file");
-
     let db_url = env::var("DATABASE_URL").expect("DATABASE_URL is not set in .env file");
     let server_url: String = env::var("SERVER_URL").expect("SERVER_URL is not set in .env file");
-
-    // create post table if not exists
-    let conn: sea_orm::DatabaseConnection = sea_orm::Database::connect(&db_url).await.unwrap();
     let templates = Tera::new(
         &env::var("TERA_TEMPLATES"
     ).expect(
         "TERA_TEMPLATES is not set in .env file"
     )).unwrap();
-
     let redis_client = redis::Client::open("redis://127.0.0.1/").unwrap();
 
+    let conn: sea_orm::DatabaseConnection = sea_orm::Database::connect(&db_url).await.unwrap();
+
     let tg_bot = TelegramBot::new(
         bot_token, redis_client.clone()
     );
-    debug!("{:?}", tg_bot.update_webhook().await.unwrap());
+    let webhook_set_res = tg_bot.update_webhook().await.unwrap();
+    debug!("{:?}", webhook_set_res);
 
     let creds = yup_oauth2::read_service_account_key(
         env::var("GOOGLE_CREDS_FILE").expect("GOOGLE_CREDS_FILE is not set in .env file")
@@ -142,20 +136,17 @@ async fn start() -> std::io::Result<()> {
 
     let gs_hub = Sheets::new(client, sheets_account);
 
-
-
     let state = api::AppState {
         conn, templates, redis_client: redis_client.clone(), tg_bot: tg_bot.clone(), gs_hub, sheet_id
     };
-
-    info!("Starting server at {server_url}");
+    //*Starting application
 
     let app = Route::new()
     //.at("/", get(api::index))
     .at("/", post(api::tg_bot_handler))
     .data(state);
 
-
+    info!("Starting server at {server_url}");
     let server = Server::new(TcpListener::bind(server_url));
     server.run(app).await
 }

+ 0 - 1
migration/src/db_enums.rs

@@ -1,5 +1,4 @@
 use sea_orm_migration::prelude::*;
-use sea_orm::EnumIter;
 
 #[derive(DeriveIden)]
 pub enum UserTokens {

+ 2 - 2
msg_handler/src/lib.rs

@@ -6,7 +6,7 @@ use log::{warn, error, debug};
 use chrono;
 
 use google_sheets4 as sheets4;
-use sheets4::{Sheets, hyper_rustls, hyper_util, api::ValueRange, yup_oauth2};
+use sheets4::{Sheets, hyper_rustls, hyper_util, api::ValueRange};
 
 enum AuthResult {
     Register,
@@ -120,7 +120,7 @@ pub async fn handle_item_price(
             "Используйте формат ```предмет ! цена```",
             None
         ).await {
-            Ok(_) => (return Ok(None)),
+            Ok(_) => return Ok(None),
             Err(err) => {
                 error!("Telegram api unavaliable or request is broken {err}");
                 return Ok(None);

+ 10 - 6
orm/src/db_func.rs

@@ -7,17 +7,19 @@ pub async fn get_user_by_chat_id(
 ) -> Result<Option<users::Model>, DbErr> {
     let q = Users::find()
         .join(JoinType::InnerJoin, users::Relation::UserTokens.def())
-        .filter(user_tokens::Column::ChatId.eq(chat_id));
+        .filter(user_tokens::Column::ChatId.eq(chat_id))
+        .filter(users::Column::TimeDeleted.is_null());
     let user = match q.one(db).await? {
         Some(usr) => usr,
         None => return Ok(None)
     };
 
-    // Users::update_many()
-    //     .col_expr(users::Column::TimeLastAction, Expr::current_time().into())
-    //     .filter(users::Column::Id.eq(user.id))
-    //     .exec(db).await?;
+    let res = Users::update_many()
+        .col_expr(users::Column::TimeLastAction, Expr::current_timestamp().into())
+        .filter(users::Column::Id.eq(user.id))
+        .exec(db).await;
 
+    debug!("res -> | {:?} |", res);
     debug!("USER -> | {:?} |", user);
 
     return Ok(Some(user));
@@ -26,7 +28,9 @@ pub async fn get_user_by_chat_id(
 pub async fn set_chat_id_by_token(
     db: &DatabaseConnection, chat_id: i64, token: &str
 ) -> Result<i64, DbErr> {
-    let user_token_q = UserTokens::find().expr(
+    let user_token_q = UserTokens::find()
+    .filter(user_tokens::Column::TimeDeleted.is_null())
+    .expr(
         Expr::cust_with_values("token = $1::uuid", [token])
     ).one(db).await?;
 

+ 0 - 2
orm/src/users.rs

@@ -1,7 +1,5 @@
 //! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.11
 
-use std::fmt::format;
-
 use sea_orm::entity::prelude::*;
 
 #[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]