chore: collect structured GetUserMusicApiResp

This commit is contained in:
mokurin000
2025-08-03 18:08:50 +08:00
parent 81c8f21729
commit 497c67ff89
3 changed files with 30 additions and 14 deletions

View File

@@ -5,21 +5,21 @@ use crate::{
title::{
MaiVersionExt as _, Sdgb1_50,
methods::APIMethod,
model::{GetUserMusicApi, GetUserMusicApiResp, UserMusicDetail},
model::{GetUserMusicApi, GetUserMusicApiResp},
},
};
pub async fn get_user_all_music(
client: &AsyncClient,
user_id: u32,
) -> Result<Vec<UserMusicDetail>, ApiError> {
let mut music_detail = Vec::new();
) -> Result<GetUserMusicApiResp, ApiError> {
let mut user_music_list = Vec::new();
let mut index = None;
loop {
let GetUserMusicApiResp {
next_index,
mut user_music_list,
user_music_list: mut new_list,
..
} = Sdgb1_50::request::<_, GetUserMusicApiResp>(
&client,
@@ -33,13 +33,23 @@ pub async fn get_user_all_music(
)
.await?;
for list in &mut user_music_list {
music_detail.append(&mut list.user_music_detail_list);
if new_list.is_empty() {
break;
}
if next_index == 0 || user_music_list.is_empty() {
break Ok(music_detail);
user_music_list.append(&mut new_list);
if next_index == 0 {
break;
}
index = Some(next_index);
}
Ok(GetUserMusicApiResp {
user_id,
next_index: 0,
length: user_music_list.len() as _,
user_music_list,
})
}

View File

@@ -17,7 +17,7 @@ pub struct GetUserMusicApi {
pub max_count: u32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode)]
#[serde(rename_all = "camelCase")]
pub struct GetUserMusicApiResp {
pub user_id: u32,
@@ -26,7 +26,7 @@ pub struct GetUserMusicApiResp {
pub user_music_list: Vec<UserMusic>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode)]
#[serde(rename_all = "camelCase")]
pub struct UserMusic {
pub user_music_detail_list: Vec<UserMusicDetail>,