use {
carbon_core::graphql::primitives::{Pubkey, I64, U64},
juniper::GraphQLObject,
};
#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "UserVolumeAccumulator")]
pub struct UserVolumeAccumulatorGraphQL {
pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
pub user: Pubkey,
pub needs_claim: bool,
pub total_unclaimed_tokens: U64,
pub total_claimed_tokens: U64,
pub current_sol_volume: U64,
pub last_update_timestamp: I64,
pub has_total_claimed_tokens: bool,
pub cashback_earned: U64,
pub total_cashback_claimed: U64,
}
impl TryFrom<crate::accounts::postgres::UserVolumeAccumulatorRow> for UserVolumeAccumulatorGraphQL {
type Error = carbon_core::error::Error;
fn try_from(
row: crate::accounts::postgres::UserVolumeAccumulatorRow,
) -> Result<Self, Self::Error> {
Ok(Self {
account_metadata: row.account_metadata.into(),
user: carbon_core::graphql::primitives::Pubkey(row.user.0),
needs_claim: row.needs_claim,
total_unclaimed_tokens: carbon_core::graphql::primitives::U64(
*row.total_unclaimed_tokens,
),
total_claimed_tokens: carbon_core::graphql::primitives::U64(*row.total_claimed_tokens),
current_sol_volume: carbon_core::graphql::primitives::U64(*row.current_sol_volume),
last_update_timestamp: carbon_core::graphql::primitives::I64(row.last_update_timestamp),
has_total_claimed_tokens: row.has_total_claimed_tokens,
cashback_earned: carbon_core::graphql::primitives::U64(*row.cashback_earned),
total_cashback_claimed: carbon_core::graphql::primitives::U64(
*row.total_cashback_claimed,
),
})
}
}