use {
crate::types::graphql::TokenGraphQL, carbon_core::graphql::primitives::U8,
juniper::GraphQLObject, serde_json,
};
#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "CreateProvider")]
pub struct CreateProviderGraphQL {
pub instruction_metadata: crate::instructions::graphql::InstructionMetadataGraphQL,
pub token_x_amount: TokenGraphQL,
pub token_y_amount: TokenGraphQL,
pub bump: U8,
pub accounts: carbon_core::graphql::primitives::Json,
}
impl TryFrom<crate::instructions::postgres::CreateProviderRow> for CreateProviderGraphQL {
type Error = carbon_core::error::Error;
fn try_from(
row: crate::instructions::postgres::CreateProviderRow,
) -> Result<Self, Self::Error> {
Ok(Self {
instruction_metadata: row.instruction_metadata.into(),
token_x_amount: row.token_x_amount.0.into(),
token_y_amount: row.token_y_amount.0.into(),
bump: carbon_core::graphql::primitives::U8((*row.bump) as u8),
accounts: carbon_core::graphql::primitives::Json(
serde_json::to_value(&row.accounts.0)
.map_err(|e| carbon_core::error::Error::Custom(e.to_string()))?,
),
})
}
}