mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-04-19 16:58:55 +00:00
Clean up user_best
This commit is contained in:
parent
2ecc5b32fd
commit
69c9c88617
2 changed files with 2 additions and 46 deletions
|
@ -7,7 +7,7 @@ use serenity::model::id::{ChannelId, UserId};
|
||||||
use youmubot_db_sql::{models::osu as models, models::osu_user as model, Pool};
|
use youmubot_db_sql::{models::osu as models, models::osu_user as model, Pool};
|
||||||
use youmubot_prelude::*;
|
use youmubot_prelude::*;
|
||||||
|
|
||||||
use crate::models::{Beatmap, Mode, Score};
|
use crate::models::{Beatmap, Mode};
|
||||||
|
|
||||||
/// Save the user IDs.
|
/// Save the user IDs.
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -101,46 +101,6 @@ impl OsuLastBeatmap {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Save each channel's last requested beatmap.
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub struct OsuUserBests(Pool);
|
|
||||||
|
|
||||||
impl TypeMapKey for OsuUserBests {
|
|
||||||
type Value = OsuUserBests;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl OsuUserBests {
|
|
||||||
pub fn new(pool: Pool) -> Self {
|
|
||||||
Self(pool)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl OsuUserBests {
|
|
||||||
pub async fn save(
|
|
||||||
&self,
|
|
||||||
user: impl Into<UserId>,
|
|
||||||
mode: Mode,
|
|
||||||
scores: impl IntoIterator<Item = Score>,
|
|
||||||
) -> Result<()> {
|
|
||||||
let user = user.into();
|
|
||||||
scores
|
|
||||||
.into_iter()
|
|
||||||
.map(|score| models::UserBestScore {
|
|
||||||
user_id: user.get() as i64,
|
|
||||||
beatmap_id: score.beatmap_id as i64,
|
|
||||||
mode: mode as u8,
|
|
||||||
mods: score.mods.bits() as i64,
|
|
||||||
cached_at: Utc::now(),
|
|
||||||
score: bincode::serialize(&score).unwrap(),
|
|
||||||
})
|
|
||||||
.map(|mut us| async move { us.store(&self.0).await })
|
|
||||||
.collect::<stream::FuturesUnordered<_>>()
|
|
||||||
.try_collect::<()>()
|
|
||||||
.await?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// An osu! saved user.
|
/// An osu! saved user.
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
pub struct OsuUser {
|
pub struct OsuUser {
|
||||||
|
|
|
@ -14,7 +14,7 @@ use serenity::{
|
||||||
utils::MessageBuilder,
|
utils::MessageBuilder,
|
||||||
};
|
};
|
||||||
|
|
||||||
use db::{OsuLastBeatmap, OsuSavedUsers, OsuUser, OsuUserBests};
|
use db::{OsuLastBeatmap, OsuSavedUsers, OsuUser};
|
||||||
use embeds::{beatmap_embed, score_embed, user_embed};
|
use embeds::{beatmap_embed, score_embed, user_embed};
|
||||||
pub use hook::{dot_osu_hook, hook, score_hook};
|
pub use hook::{dot_osu_hook, hook, score_hook};
|
||||||
use server_rank::{SERVER_RANK_COMMAND, SHOW_LEADERBOARD_COMMAND};
|
use server_rank::{SERVER_RANK_COMMAND, SHOW_LEADERBOARD_COMMAND};
|
||||||
|
@ -56,7 +56,6 @@ pub struct OsuEnv {
|
||||||
// databases
|
// databases
|
||||||
pub(crate) saved_users: OsuSavedUsers,
|
pub(crate) saved_users: OsuSavedUsers,
|
||||||
pub(crate) last_beatmaps: OsuLastBeatmap,
|
pub(crate) last_beatmaps: OsuLastBeatmap,
|
||||||
pub(crate) user_bests: OsuUserBests,
|
|
||||||
// clients
|
// clients
|
||||||
pub(crate) client: Arc<crate::Client>,
|
pub(crate) client: Arc<crate::Client>,
|
||||||
pub(crate) oppai: BeatmapCache,
|
pub(crate) oppai: BeatmapCache,
|
||||||
|
@ -91,7 +90,6 @@ pub async fn setup(
|
||||||
// Databases
|
// Databases
|
||||||
let saved_users = OsuSavedUsers::new(prelude.sql.clone());
|
let saved_users = OsuSavedUsers::new(prelude.sql.clone());
|
||||||
let last_beatmaps = OsuLastBeatmap::new(prelude.sql.clone());
|
let last_beatmaps = OsuLastBeatmap::new(prelude.sql.clone());
|
||||||
let user_bests = OsuUserBests::new(prelude.sql.clone());
|
|
||||||
|
|
||||||
// API client
|
// API client
|
||||||
let osu_client = Arc::new(
|
let osu_client = Arc::new(
|
||||||
|
@ -118,7 +116,6 @@ pub async fn setup(
|
||||||
// Legacy data
|
// Legacy data
|
||||||
data.insert::<OsuLastBeatmap>(last_beatmaps.clone());
|
data.insert::<OsuLastBeatmap>(last_beatmaps.clone());
|
||||||
data.insert::<OsuSavedUsers>(saved_users.clone());
|
data.insert::<OsuSavedUsers>(saved_users.clone());
|
||||||
data.insert::<OsuUserBests>(user_bests.clone());
|
|
||||||
data.insert::<OsuClient>(osu_client.clone());
|
data.insert::<OsuClient>(osu_client.clone());
|
||||||
data.insert::<BeatmapCache>(oppai_cache.clone());
|
data.insert::<BeatmapCache>(oppai_cache.clone());
|
||||||
data.insert::<BeatmapMetaCache>(beatmap_cache.clone());
|
data.insert::<BeatmapMetaCache>(beatmap_cache.clone());
|
||||||
|
@ -127,7 +124,6 @@ pub async fn setup(
|
||||||
prelude,
|
prelude,
|
||||||
saved_users,
|
saved_users,
|
||||||
last_beatmaps,
|
last_beatmaps,
|
||||||
user_bests,
|
|
||||||
client: osu_client,
|
client: osu_client,
|
||||||
oppai: oppai_cache,
|
oppai: oppai_cache,
|
||||||
beatmaps: beatmap_cache,
|
beatmaps: beatmap_cache,
|
||||||
|
|
Loading…
Add table
Reference in a new issue