Clean up user_best

This commit is contained in:
Natsu Kagami 2024-07-24 05:15:01 +02:00 committed by Natsu Kagami
parent 2ecc5b32fd
commit 69c9c88617
2 changed files with 2 additions and 46 deletions

View file

@ -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_prelude::*;
use crate::models::{Beatmap, Mode, Score};
use crate::models::{Beatmap, Mode};
/// Save the user IDs.
#[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.
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct OsuUser {

View file

@ -14,7 +14,7 @@ use serenity::{
utils::MessageBuilder,
};
use db::{OsuLastBeatmap, OsuSavedUsers, OsuUser, OsuUserBests};
use db::{OsuLastBeatmap, OsuSavedUsers, OsuUser};
use embeds::{beatmap_embed, score_embed, user_embed};
pub use hook::{dot_osu_hook, hook, score_hook};
use server_rank::{SERVER_RANK_COMMAND, SHOW_LEADERBOARD_COMMAND};
@ -56,7 +56,6 @@ pub struct OsuEnv {
// databases
pub(crate) saved_users: OsuSavedUsers,
pub(crate) last_beatmaps: OsuLastBeatmap,
pub(crate) user_bests: OsuUserBests,
// clients
pub(crate) client: Arc<crate::Client>,
pub(crate) oppai: BeatmapCache,
@ -91,7 +90,6 @@ pub async fn setup(
// Databases
let saved_users = OsuSavedUsers::new(prelude.sql.clone());
let last_beatmaps = OsuLastBeatmap::new(prelude.sql.clone());
let user_bests = OsuUserBests::new(prelude.sql.clone());
// API client
let osu_client = Arc::new(
@ -118,7 +116,6 @@ pub async fn setup(
// Legacy data
data.insert::<OsuLastBeatmap>(last_beatmaps.clone());
data.insert::<OsuSavedUsers>(saved_users.clone());
data.insert::<OsuUserBests>(user_bests.clone());
data.insert::<OsuClient>(osu_client.clone());
data.insert::<BeatmapCache>(oppai_cache.clone());
data.insert::<BeatmapMetaCache>(beatmap_cache.clone());
@ -127,7 +124,6 @@ pub async fn setup(
prelude,
saved_users,
last_beatmaps,
user_bests,
client: osu_client,
oppai: oppai_cache,
beatmaps: beatmap_cache,