use {
carbon_core::graphql::primitives::{Pubkey, U32, U64, U8},
juniper::GraphQLObject,
};
#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "UserBorrowPosition")]
pub struct UserBorrowPositionGraphQL {
pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
pub protocol: Pubkey,
pub mint: Pubkey,
pub with_interest: U8,
pub amount: U64,
pub debt_ceiling: U64,
pub last_update: U64,
pub expand_pct: i32,
pub expand_duration: U32,
pub base_debt_ceiling: U64,
pub max_debt_ceiling: U64,
pub status: U8,
}
impl TryFrom<crate::accounts::postgres::UserBorrowPositionRow> for UserBorrowPositionGraphQL {
type Error = carbon_core::error::Error;
fn try_from(
row: crate::accounts::postgres::UserBorrowPositionRow,
) -> Result<Self, Self::Error> {
Ok(Self {
account_metadata: row.account_metadata.into(),
protocol: carbon_core::graphql::primitives::Pubkey(row.protocol.0),
mint: carbon_core::graphql::primitives::Pubkey(row.mint.0),
with_interest: carbon_core::graphql::primitives::U8((*row.with_interest) as u8),
amount: carbon_core::graphql::primitives::U64(*row.amount),
debt_ceiling: carbon_core::graphql::primitives::U64(*row.debt_ceiling),
last_update: carbon_core::graphql::primitives::U64(*row.last_update),
expand_pct: *row.expand_pct,
expand_duration: carbon_core::graphql::primitives::U32((*row.expand_duration) as u32),
base_debt_ceiling: carbon_core::graphql::primitives::U64(*row.base_debt_ceiling),
max_debt_ceiling: carbon_core::graphql::primitives::U64(*row.max_debt_ceiling),
status: carbon_core::graphql::primitives::U8((*row.status) as u8),
})
}
}