69 lines
1.8 KiB
Rust
69 lines
1.8 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct GetUserRegionApi {
|
|
pub user_id: u32,
|
|
}
|
|
|
|
impl From<u32> for GetUserRegionApi {
|
|
fn from(user_id: u32) -> Self {
|
|
Self { user_id }
|
|
}
|
|
}
|
|
|
|
impl From<GetUserRegionApiResp> for Vec<UserRegionFlatten> {
|
|
fn from(
|
|
GetUserRegionApiResp {
|
|
user_id,
|
|
user_region_list,
|
|
..
|
|
}: GetUserRegionApiResp,
|
|
) -> Self {
|
|
user_region_list
|
|
.into_iter()
|
|
.map(
|
|
|UserRegion {
|
|
region_id,
|
|
play_count,
|
|
created,
|
|
}| {
|
|
UserRegionFlatten {
|
|
user_id,
|
|
region_id,
|
|
play_count,
|
|
created,
|
|
}
|
|
},
|
|
)
|
|
.collect()
|
|
}
|
|
}
|
|
|
|
#[derive(Default, Debug, Clone, PartialEq)]
|
|
#[cfg_attr(feature = "parquet", derive(parquet_derive::ParquetRecordWriter))]
|
|
pub struct UserRegionFlatten {
|
|
pub user_id: u32,
|
|
pub region_id: u32,
|
|
pub play_count: i64,
|
|
pub created: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "bincode", derive(bincode::Encode, bincode::Decode))]
|
|
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct GetUserRegionApiResp {
|
|
pub user_id: u32,
|
|
pub length: i64,
|
|
pub user_region_list: Vec<UserRegion>,
|
|
}
|
|
|
|
#[cfg_attr(feature = "bincode", derive(bincode::Encode, bincode::Decode))]
|
|
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct UserRegion {
|
|
pub region_id: u32,
|
|
pub play_count: i64,
|
|
pub created: String,
|
|
}
|