Implement basic player info command

This commit is contained in:
Kiana Sheibani 2023-11-26 14:25:14 -05:00
parent 3836ccfb9f
commit c06c18c0ba
Signed by: toki
GPG key ID: 6CB106C25E86A9F7
4 changed files with 123 additions and 20 deletions

View file

@ -25,7 +25,7 @@ pub struct EventSets {
#[derive(cynic::QueryFragment, Debug)]
#[cynic(variables = "EventSetsVars")]
struct Event {
#[arguments(page: $page, perPage: 30, sortType: RECENT)]
#[arguments(page: $page, perPage: 25, sortType: RECENT)]
sets: Option<SetConnection>,
}
@ -74,6 +74,12 @@ struct Player {
id: Option<PlayerId>,
gamer_tag: Option<String>,
prefix: Option<String>,
user: Option<User>,
}
#[derive(cynic::QueryFragment, Debug)]
struct User {
slug: Option<String>,
}
// Unwrap
@ -121,8 +127,9 @@ impl QueryUnwrap<EventSetsVars> for EventSets {
let p_ = p.player?;
Some(PlayerData {
id: p_.id?,
name: p_.gamer_tag,
prefix: p_.prefix,
name: p_.gamer_tag?,
prefix: p_.prefix.filter(|pr| !pr.is_empty()),
slug: p_.user?.slug?,
})
})
.try_collect()

View file

@ -23,6 +23,12 @@ struct Player {
id: Option<PlayerId>,
gamer_tag: Option<String>,
prefix: Option<String>,
user: Option<User>,
}
#[derive(cynic::QueryFragment, Debug)]
struct User {
slug: Option<String>,
}
// Unwrapping
@ -30,8 +36,9 @@ struct Player {
#[derive(Debug, Clone)]
pub struct PlayerData {
pub id: PlayerId,
pub name: Option<String>,
pub name: String,
pub prefix: Option<String>,
pub slug: String,
}
impl QueryUnwrap<PlayerInfoVars> for PlayerInfo {
@ -41,8 +48,9 @@ impl QueryUnwrap<PlayerInfoVars> for PlayerInfo {
let player = response.data?.player?;
Some(PlayerData {
id: player.id?,
name: player.gamer_tag,
name: player.gamer_tag?,
prefix: player.prefix.filter(|pr| !pr.is_empty()),
slug: player.user?.slug?,
})
}
}