forked from Skynet/discord-bot
fix: further improvements to teh count command
This commit is contained in:
parent
b44518c467
commit
a907243986
1 changed files with 42 additions and 22 deletions
|
@ -112,12 +112,13 @@ pub mod servers {
|
||||||
}
|
}
|
||||||
|
|
||||||
// get all members
|
// get all members
|
||||||
let (wolves_current, wolves_past) = get_wolves_total(&db).await;
|
let (wolves_current, wolves_past, total) = get_wolves_total(&db).await;
|
||||||
cs.push((wolves_current, wolves_past, String::from("Skynet Network")));
|
cs.push((total, total, String::from("Skynet Network")));
|
||||||
|
cs.push((wolves_current, wolves_past, String::from("Clubs/Socs Servers")));
|
||||||
|
|
||||||
// treat teh committee server as its own thing
|
// treat teh committee server as its own thing
|
||||||
let committee_current = get_wolves_committee(&db).await;
|
let committee_current = get_wolves_committee(&db).await;
|
||||||
cs.push((committee_current, 0, String::from("Committee")));
|
cs.push((committee_current, 0, String::from("Committee Server")));
|
||||||
|
|
||||||
cs.sort_by_key(|(current, _, _)| *current);
|
cs.sort_by_key(|(current, _, _)| *current);
|
||||||
cs.reverse();
|
cs.reverse();
|
||||||
|
@ -164,24 +165,7 @@ pub mod servers {
|
||||||
pub count: i64,
|
pub count: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_wolves_total(db: &Pool<Sqlite>) -> (i64, i64) {
|
async fn get_wolves_total(db: &Pool<Sqlite>) -> (i64, i64, i64) {
|
||||||
let total = match sqlx::query_as::<_, Count>(
|
|
||||||
r#"
|
|
||||||
SELECT COUNT(DISTINCT id_wolves) as count
|
|
||||||
FROM wolves
|
|
||||||
WHERE discord IS NOT NULL
|
|
||||||
"#,
|
|
||||||
)
|
|
||||||
.fetch_one(db)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(res) => res.count,
|
|
||||||
Err(e) => {
|
|
||||||
dbg!(e);
|
|
||||||
0
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let current = match sqlx::query_as::<_, Count>(
|
let current = match sqlx::query_as::<_, Count>(
|
||||||
r#"
|
r#"
|
||||||
SELECT COUNT(DISTINCT id_wolves) as count
|
SELECT COUNT(DISTINCT id_wolves) as count
|
||||||
|
@ -204,7 +188,43 @@ pub mod servers {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
(current, total)
|
let cns = match sqlx::query_as::<_, Count>(
|
||||||
|
r#"
|
||||||
|
SELECT COUNT(DISTINCT id_wolves) as count
|
||||||
|
FROM server_members
|
||||||
|
JOIN wolves USING (id_wolves)
|
||||||
|
WHERE wolves.discord IS NOT NULL
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.bind(get_now_iso(true))
|
||||||
|
.fetch_one(db)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(res) => res.count,
|
||||||
|
Err(e) => {
|
||||||
|
dbg!(e);
|
||||||
|
0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let total = match sqlx::query_as::<_, Count>(
|
||||||
|
r#"
|
||||||
|
SELECT COUNT(DISTINCT id_wolves) as count
|
||||||
|
FROM wolves
|
||||||
|
WHERE discord IS NOT NULL
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.fetch_one(db)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(res) => res.count,
|
||||||
|
Err(e) => {
|
||||||
|
dbg!(e);
|
||||||
|
0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
(current, cns, total)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_wolves_committee(db: &Pool<Sqlite>) -> i64 {
|
async fn get_wolves_committee(db: &Pool<Sqlite>) -> i64 {
|
||||||
|
|
Loading…
Add table
Reference in a new issue