From f992a99bd46f788a35349d01a408318eaab60428 Mon Sep 17 00:00:00 2001 From: Akulij Date: Thu, 3 Apr 2025 22:43:49 +0900 Subject: [PATCH] create db functions to get/set messages --- src/db.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/db.rs b/src/db.rs index b946e02..d0d7dff 100644 --- a/src/db.rs +++ b/src/db.rs @@ -74,4 +74,53 @@ impl DB { .unwrap(), } } + + pub async fn get_message(&mut self, chatid: i64, messageid: i32) -> Result, Box> { + use self::schema::messages::dsl::*; + let conn = &mut self.pool.get().await.unwrap(); + + let msg = messages + .filter(chat_id.eq(chatid)) + .filter(message_id.eq(messageid as i64)) + .first::(conn) + .await + .optional()?; + + Ok(msg) + } + + pub async fn get_message_literal(&mut self, chatid: i64, messageid: i32) -> Result, Box> { + let msg = self.get_message(chatid, messageid).await?; + Ok(msg.map(|m| m.token)) + } + + pub async fn set_message_literal(&mut self, chatid: i64, messageid: i32, literal: &str) -> Result<(), Box> { + use self::schema::messages::dsl::*; + let conn = &mut self.pool.get().await?; + + let msg = self.clone().get_message(chatid, messageid).await?; + + match msg { + Some(msg) => { + diesel::update(messages) + .filter(id.eq(msg.id)) + .set(token.eq(literal)) + .execute(conn) + .await?; + }, + None => { + diesel::insert_into(messages) + .values(( + chat_id.eq(chatid), + message_id.eq(messageid as i64), + token.eq(literal) + )) + .execute(conn) + .await?; + } + }; + + + Ok(()) + } }