carbon-marginfi-v2-decoder 1.0.0

MarginfiV2 Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use {
    crate::types::graphql::{SpotPositionGraphQL, UserStatusGraphQL},
    carbon_core::graphql::primitives::{Pubkey, U64, U8},
    juniper::GraphQLObject,
};

#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "MinimalUser")]
pub struct MinimalUserGraphQL {
    pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
    pub authority: Pubkey,
    pub delegate: Pubkey,
    pub name: Vec<U8>,
    pub spot_positions: Vec<SpotPositionGraphQL>,
    pub padding1: Vec<U64>,
    pub padding2: Vec<U64>,
    pub padding3: Vec<U64>,
    pub padding4: Vec<U64>,
    pub padding5: Vec<U64>,
    pub padding6: Vec<U64>,
    pub padding7: Vec<i32>,
    pub sub_account_id: i32,
    pub status: UserStatusGraphQL,
    pub padding8: Vec<U8>,
}

impl TryFrom<crate::accounts::postgres::MinimalUserRow> for MinimalUserGraphQL {
    type Error = carbon_core::error::Error;
    fn try_from(row: crate::accounts::postgres::MinimalUserRow) -> Result<Self, Self::Error> {
        Ok(Self {
            account_metadata: row.account_metadata.into(),
            authority: carbon_core::graphql::primitives::Pubkey(row.authority.0),
            delegate: carbon_core::graphql::primitives::Pubkey(row.delegate.0),
            name: row
                .name
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
            spot_positions: row
                .spot_positions
                .0
                .into_iter()
                .map(|item| item.into())
                .collect(),
            padding1: row
                .padding1
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            padding2: row
                .padding2
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            padding3: row
                .padding3
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            padding4: row
                .padding4
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            padding5: row
                .padding5
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            padding6: row
                .padding6
                .into_iter()
                .map(|item| carbon_core::graphql::primitives::U64(*item))
                .collect(),
            padding7: row.padding7.into_iter().map(|item| *item).collect(),
            sub_account_id: *row.sub_account_id,
            status: row.status.0.into(),
            padding8: row
                .padding8
                .into_iter()
                .map(carbon_core::graphql::primitives::U8)
                .collect(),
        })
    }
}