use {
crate::types::graphql::{PoolMetricsGraphQL, VolatilityTrackerGraphQL},
carbon_core::graphql::primitives::{Pubkey, U128, U64, U8},
juniper::GraphQLObject,
};
#[derive(Debug, Clone, GraphQLObject)]
#[graphql(name = "VirtualPool")]
pub struct VirtualPoolGraphQL {
pub account_metadata: crate::accounts::graphql::AccountMetadataGraphQL,
pub volatility_tracker: VolatilityTrackerGraphQL,
pub config: Pubkey,
pub creator: Pubkey,
pub base_mint: Pubkey,
pub base_vault: Pubkey,
pub quote_vault: Pubkey,
pub base_reserve: U64,
pub quote_reserve: U64,
pub protocol_base_fee: U64,
pub protocol_quote_fee: U64,
pub partner_base_fee: U64,
pub partner_quote_fee: U64,
pub sqrt_price: U128,
pub activation_point: U64,
pub pool_type: U8,
pub is_migrated: U8,
pub is_partner_withdraw_surplus: U8,
pub is_protocol_withdraw_surplus: U8,
pub migration_progress: U8,
pub is_withdraw_leftover: U8,
pub is_creator_withdraw_surplus: U8,
pub migration_fee_withdraw_status: U8,
pub metrics: PoolMetricsGraphQL,
pub finish_curve_timestamp: U64,
pub creator_base_fee: U64,
pub creator_quote_fee: U64,
pub legacy_creation_fee_bits: U8,
pub creation_fee_bits: U8,
pub has_swap: U8,
pub padding0: Vec<U8>,
pub protocol_liquidity_migration_fee_bps: i32,
pub padding1: Vec<U8>,
pub protocol_migration_base_fee_amount: U64,
pub protocol_migration_quote_fee_amount: U64,
pub padding2: Vec<U64>,
}
impl TryFrom<crate::accounts::postgres::VirtualPoolRow> for VirtualPoolGraphQL {
type Error = carbon_core::error::Error;
fn try_from(row: crate::accounts::postgres::VirtualPoolRow) -> Result<Self, Self::Error> {
Ok(Self {
account_metadata: row.account_metadata.into(),
volatility_tracker: row.volatility_tracker.0.into(),
config: carbon_core::graphql::primitives::Pubkey(row.config.0),
creator: carbon_core::graphql::primitives::Pubkey(row.creator.0),
base_mint: carbon_core::graphql::primitives::Pubkey(row.base_mint.0),
base_vault: carbon_core::graphql::primitives::Pubkey(row.base_vault.0),
quote_vault: carbon_core::graphql::primitives::Pubkey(row.quote_vault.0),
base_reserve: carbon_core::graphql::primitives::U64(*row.base_reserve),
quote_reserve: carbon_core::graphql::primitives::U64(*row.quote_reserve),
protocol_base_fee: carbon_core::graphql::primitives::U64(*row.protocol_base_fee),
protocol_quote_fee: carbon_core::graphql::primitives::U64(*row.protocol_quote_fee),
partner_base_fee: carbon_core::graphql::primitives::U64(*row.partner_base_fee),
partner_quote_fee: carbon_core::graphql::primitives::U64(*row.partner_quote_fee),
sqrt_price: carbon_core::graphql::primitives::U128(*row.sqrt_price),
activation_point: carbon_core::graphql::primitives::U64(*row.activation_point),
pool_type: carbon_core::graphql::primitives::U8((*row.pool_type) as u8),
is_migrated: carbon_core::graphql::primitives::U8((*row.is_migrated) as u8),
is_partner_withdraw_surplus: carbon_core::graphql::primitives::U8(
(*row.is_partner_withdraw_surplus) as u8,
),
is_protocol_withdraw_surplus: carbon_core::graphql::primitives::U8(
(*row.is_protocol_withdraw_surplus) as u8,
),
migration_progress: carbon_core::graphql::primitives::U8(
(*row.migration_progress) as u8,
),
is_withdraw_leftover: carbon_core::graphql::primitives::U8(
(*row.is_withdraw_leftover) as u8,
),
is_creator_withdraw_surplus: carbon_core::graphql::primitives::U8(
(*row.is_creator_withdraw_surplus) as u8,
),
migration_fee_withdraw_status: carbon_core::graphql::primitives::U8(
(*row.migration_fee_withdraw_status) as u8,
),
metrics: row.metrics.0.into(),
finish_curve_timestamp: carbon_core::graphql::primitives::U64(
*row.finish_curve_timestamp,
),
creator_base_fee: carbon_core::graphql::primitives::U64(*row.creator_base_fee),
creator_quote_fee: carbon_core::graphql::primitives::U64(*row.creator_quote_fee),
legacy_creation_fee_bits: carbon_core::graphql::primitives::U8(
(*row.legacy_creation_fee_bits) as u8,
),
creation_fee_bits: carbon_core::graphql::primitives::U8((*row.creation_fee_bits) as u8),
has_swap: carbon_core::graphql::primitives::U8((*row.has_swap) as u8),
padding0: row
.padding0
.into_iter()
.map(carbon_core::graphql::primitives::U8)
.collect(),
protocol_liquidity_migration_fee_bps: *row.protocol_liquidity_migration_fee_bps,
padding1: row
.padding1
.into_iter()
.map(carbon_core::graphql::primitives::U8)
.collect(),
protocol_migration_base_fee_amount: carbon_core::graphql::primitives::U64(
*row.protocol_migration_base_fee_amount,
),
protocol_migration_quote_fee_amount: carbon_core::graphql::primitives::U64(
*row.protocol_migration_quote_fee_amount,
),
padding2: row
.padding2
.into_iter()
.map(|item| carbon_core::graphql::primitives::U64(*item))
.collect(),
})
}
}