DbInvites .filter method

! untested
This commit is contained in:
shockrah 2020-11-04 00:19:35 -08:00
parent 562377d6e2
commit 960abac7d9

View File

@ -19,7 +19,7 @@ pub struct Message {
}
#[async_trait]
impl FromDB<Message> for Message {
impl FromDB<Message, (BigInt, UBigInt)> for Message {
type Row = Option<(UBigInt, BigInt, VarChar, UBigInt, VarChar)>;
async fn get(p: &Pool, id: UBigInt) -> Response<Self> {
@ -78,4 +78,37 @@ impl FromDB<Message> for Message {
}
return Response::Other(no_conn!("Message::FromDB::update"))
}
async fn filter(p: &Pool, (time, channel_id): (BigInt, UBigInt)) -> Response<Self> {
//! FIlter happens via unix_timestamp and channel_id respectively
if let Ok(conn) = p.get_conn().await {
let q = "SELECT id, time, content, author_id";
if let Ok(query)= conn.prep_exec(q, params!{"time" => time, "cid" => channel_id}).await {
let mapping_r = query.map_and_drop(|row| {
let (id, time, content, uid): (UBigInt, BigInt, VarChar, UBigInt) =
mysql_async::from_row(row);
Message {
id: id,
time: time,
content: content,
author_id: uid,
channel_name: "".into() // no point at this point tbh
}
}).await;
match mapping_r {
Ok((_, messages)) => Response::Set(messages),
Err(_) => Response::Other(sql_err!("db::Message::filter"))
}
}
else {
return Response::Empty;
}
}
else {
return Response::Other(no_conn!("db::Message::filter"));
}
}
}