create db functions to get/set messages
This commit is contained in:
parent
c93d2f1ee8
commit
f992a99bd4
49
src/db.rs
49
src/db.rs
@ -74,4 +74,53 @@ impl DB {
|
|||||||
.unwrap(),
|
.unwrap(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn get_message(&mut self, chatid: i64, messageid: i32) -> Result<Option<Message>, Box<dyn std::error::Error>> {
|
||||||
|
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::<Message>(conn)
|
||||||
|
.await
|
||||||
|
.optional()?;
|
||||||
|
|
||||||
|
Ok(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_message_literal(&mut self, chatid: i64, messageid: i32) -> Result<Option<String>, Box<dyn std::error::Error>> {
|
||||||
|
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<dyn std::error::Error>> {
|
||||||
|
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(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user