pub mod config_group_fee_row;
pub mod configure_bank_rate_limits_row;
pub mod configure_deleverage_withdrawal_limit_row;
pub mod configure_group_rate_limits_row;
pub mod cpi_event_row;
pub mod drift_deposit_row;
pub mod drift_harvest_reward_row;
pub mod drift_init_user_row;
pub mod drift_withdraw_row;
pub mod edit_global_fee_state_row;
pub mod edit_staked_settings_row;
pub mod end_deleverage_row;
pub mod end_liquidation_row;
pub mod init_bank_metadata_row;
pub mod init_global_fee_state_row;
pub mod init_staked_settings_row;
pub mod juplend_deposit_row;
pub mod juplend_init_position_row;
pub mod juplend_withdraw_row;
pub mod kamino_deposit_row;
pub mod kamino_harvest_reward_row;
pub mod kamino_init_obligation_row;
pub mod kamino_withdraw_row;
pub mod lending_account_borrow_row;
pub mod lending_account_clear_emissions_row;
pub mod lending_account_close_balance_row;
pub mod lending_account_deposit_row;
pub mod lending_account_end_flashloan_row;
pub mod lending_account_liquidate_row;
pub mod lending_account_pulse_health_row;
pub mod lending_account_repay_row;
pub mod lending_account_start_flashloan_row;
pub mod lending_account_withdraw_row;
pub mod lending_pool_accrue_bank_interest_row;
pub mod lending_pool_add_bank_drift_row;
pub mod lending_pool_add_bank_juplend_row;
pub mod lending_pool_add_bank_kamino_row;
pub mod lending_pool_add_bank_permissionless_row;
pub mod lending_pool_add_bank_row;
pub mod lending_pool_add_bank_solend_row;
pub mod lending_pool_add_bank_with_seed_row;
pub mod lending_pool_clone_bank_row;
pub mod lending_pool_clone_emode_row;
pub mod lending_pool_close_bank_row;
pub mod lending_pool_collect_bank_fees_row;
pub mod lending_pool_configure_bank_emode_row;
pub mod lending_pool_configure_bank_interest_only_row;
pub mod lending_pool_configure_bank_limits_only_row;
pub mod lending_pool_configure_bank_oracle_row;
pub mod lending_pool_configure_bank_row;
pub mod lending_pool_force_tokenless_repay_complete_row;
pub mod lending_pool_handle_bankruptcy_row;
pub mod lending_pool_pulse_bank_price_cache_row;
pub mod lending_pool_reclaim_emissions_vault_row;
pub mod lending_pool_set_fixed_oracle_price_row;
pub mod lending_pool_update_fees_destination_account_row;
pub mod lending_pool_withdraw_fees_permissionless_row;
pub mod lending_pool_withdraw_fees_row;
pub mod lending_pool_withdraw_insurance_row;
pub mod marginfi_account_close_order_row;
pub mod marginfi_account_close_row;
pub mod marginfi_account_end_execute_order_row;
pub mod marginfi_account_init_liq_record_row;
pub mod marginfi_account_initialize_pda_row;
pub mod marginfi_account_initialize_row;
pub mod marginfi_account_keeper_close_order_row;
pub mod marginfi_account_place_order_row;
pub mod marginfi_account_set_freeze_row;
pub mod marginfi_account_set_keeper_close_flags_row;
pub mod marginfi_account_start_execute_order_row;
pub mod marginfi_account_update_emissions_destination_account_row;
pub mod marginfi_group_configure_row;
pub mod marginfi_group_initialize_row;
pub mod migrate_curve_row;
pub mod panic_pause_row;
pub mod panic_unpause_permissionless_row;
pub mod panic_unpause_row;
pub mod propagate_fee_state_row;
pub mod propagate_staked_settings_row;
pub mod purge_deleverage_balance_row;
pub mod solend_deposit_row;
pub mod solend_init_obligation_row;
pub mod solend_withdraw_row;
pub mod start_deleverage_row;
pub mod start_liquidation_row;
pub mod super_admin_deposit_row;
pub mod super_admin_withdraw_row;
pub mod transfer_to_new_account_pda_row;
pub mod transfer_to_new_account_row;
pub mod update_deleverage_withdrawals_row;
pub mod update_group_rate_limiter_row;
pub mod write_bank_metadata_row;
pub use self::{
config_group_fee_row::*, configure_bank_rate_limits_row::*,
configure_deleverage_withdrawal_limit_row::*, configure_group_rate_limits_row::*,
cpi_event_row::*, drift_deposit_row::*, drift_harvest_reward_row::*, drift_init_user_row::*,
drift_withdraw_row::*, edit_global_fee_state_row::*, edit_staked_settings_row::*,
end_deleverage_row::*, end_liquidation_row::*, init_bank_metadata_row::*,
init_global_fee_state_row::*, init_staked_settings_row::*, juplend_deposit_row::*,
juplend_init_position_row::*, juplend_withdraw_row::*, kamino_deposit_row::*,
kamino_harvest_reward_row::*, kamino_init_obligation_row::*, kamino_withdraw_row::*,
lending_account_borrow_row::*, lending_account_clear_emissions_row::*,
lending_account_close_balance_row::*, lending_account_deposit_row::*,
lending_account_end_flashloan_row::*, lending_account_liquidate_row::*,
lending_account_pulse_health_row::*, lending_account_repay_row::*,
lending_account_start_flashloan_row::*, lending_account_withdraw_row::*,
lending_pool_accrue_bank_interest_row::*, lending_pool_add_bank_drift_row::*,
lending_pool_add_bank_juplend_row::*, lending_pool_add_bank_kamino_row::*,
lending_pool_add_bank_permissionless_row::*, lending_pool_add_bank_row::*,
lending_pool_add_bank_solend_row::*, lending_pool_add_bank_with_seed_row::*,
lending_pool_clone_bank_row::*, lending_pool_clone_emode_row::*,
lending_pool_close_bank_row::*, lending_pool_collect_bank_fees_row::*,
lending_pool_configure_bank_emode_row::*, lending_pool_configure_bank_interest_only_row::*,
lending_pool_configure_bank_limits_only_row::*, lending_pool_configure_bank_oracle_row::*,
lending_pool_configure_bank_row::*, lending_pool_force_tokenless_repay_complete_row::*,
lending_pool_handle_bankruptcy_row::*, lending_pool_pulse_bank_price_cache_row::*,
lending_pool_reclaim_emissions_vault_row::*, lending_pool_set_fixed_oracle_price_row::*,
lending_pool_update_fees_destination_account_row::*,
lending_pool_withdraw_fees_permissionless_row::*, lending_pool_withdraw_fees_row::*,
lending_pool_withdraw_insurance_row::*, marginfi_account_close_order_row::*,
marginfi_account_close_row::*, marginfi_account_end_execute_order_row::*,
marginfi_account_init_liq_record_row::*, marginfi_account_initialize_pda_row::*,
marginfi_account_initialize_row::*, marginfi_account_keeper_close_order_row::*,
marginfi_account_place_order_row::*, marginfi_account_set_freeze_row::*,
marginfi_account_set_keeper_close_flags_row::*, marginfi_account_start_execute_order_row::*,
marginfi_account_update_emissions_destination_account_row::*, marginfi_group_configure_row::*,
marginfi_group_initialize_row::*, migrate_curve_row::*, panic_pause_row::*,
panic_unpause_permissionless_row::*, panic_unpause_row::*, propagate_fee_state_row::*,
propagate_staked_settings_row::*, purge_deleverage_balance_row::*, solend_deposit_row::*,
solend_init_obligation_row::*, solend_withdraw_row::*, start_deleverage_row::*,
start_liquidation_row::*, super_admin_deposit_row::*, super_admin_withdraw_row::*,
transfer_to_new_account_pda_row::*, transfer_to_new_account_row::*,
update_deleverage_withdrawals_row::*, update_group_rate_limiter_row::*,
write_bank_metadata_row::*,
};
use super::MarginfiV2Instruction;
pub struct MarginfiV2InstructionsMigration;
impl sqlx_migrator::Migration<sqlx::Postgres> for MarginfiV2InstructionsMigration {
fn app(&self) -> &str {
"marginfi-v2"
}
fn name(&self) -> &str {
"marginfi_v2_instructions"
}
fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
vec![
Box::new(ConfigGroupFeeMigrationOperation),
Box::new(ConfigureBankRateLimitsMigrationOperation),
Box::new(ConfigureDeleverageWithdrawalLimitMigrationOperation),
Box::new(ConfigureGroupRateLimitsMigrationOperation),
Box::new(DriftDepositMigrationOperation),
Box::new(DriftHarvestRewardMigrationOperation),
Box::new(DriftInitUserMigrationOperation),
Box::new(DriftWithdrawMigrationOperation),
Box::new(EditGlobalFeeStateMigrationOperation),
Box::new(EditStakedSettingsMigrationOperation),
Box::new(EndDeleverageMigrationOperation),
Box::new(EndLiquidationMigrationOperation),
Box::new(InitBankMetadataMigrationOperation),
Box::new(InitGlobalFeeStateMigrationOperation),
Box::new(InitStakedSettingsMigrationOperation),
Box::new(JuplendDepositMigrationOperation),
Box::new(JuplendInitPositionMigrationOperation),
Box::new(JuplendWithdrawMigrationOperation),
Box::new(KaminoDepositMigrationOperation),
Box::new(KaminoHarvestRewardMigrationOperation),
Box::new(KaminoInitObligationMigrationOperation),
Box::new(KaminoWithdrawMigrationOperation),
Box::new(LendingAccountBorrowMigrationOperation),
Box::new(LendingAccountClearEmissionsMigrationOperation),
Box::new(LendingAccountCloseBalanceMigrationOperation),
Box::new(LendingAccountDepositMigrationOperation),
Box::new(LendingAccountEndFlashloanMigrationOperation),
Box::new(LendingAccountLiquidateMigrationOperation),
Box::new(LendingAccountPulseHealthMigrationOperation),
Box::new(LendingAccountRepayMigrationOperation),
Box::new(LendingAccountStartFlashloanMigrationOperation),
Box::new(LendingAccountWithdrawMigrationOperation),
Box::new(LendingPoolAccrueBankInterestMigrationOperation),
Box::new(LendingPoolAddBankMigrationOperation),
Box::new(LendingPoolAddBankDriftMigrationOperation),
Box::new(LendingPoolAddBankJuplendMigrationOperation),
Box::new(LendingPoolAddBankKaminoMigrationOperation),
Box::new(LendingPoolAddBankPermissionlessMigrationOperation),
Box::new(LendingPoolAddBankSolendMigrationOperation),
Box::new(LendingPoolAddBankWithSeedMigrationOperation),
Box::new(LendingPoolCloneBankMigrationOperation),
Box::new(LendingPoolCloneEmodeMigrationOperation),
Box::new(LendingPoolCloseBankMigrationOperation),
Box::new(LendingPoolCollectBankFeesMigrationOperation),
Box::new(LendingPoolConfigureBankMigrationOperation),
Box::new(LendingPoolConfigureBankEmodeMigrationOperation),
Box::new(LendingPoolConfigureBankInterestOnlyMigrationOperation),
Box::new(LendingPoolConfigureBankLimitsOnlyMigrationOperation),
Box::new(LendingPoolConfigureBankOracleMigrationOperation),
Box::new(LendingPoolForceTokenlessRepayCompleteMigrationOperation),
Box::new(LendingPoolHandleBankruptcyMigrationOperation),
Box::new(LendingPoolPulseBankPriceCacheMigrationOperation),
Box::new(LendingPoolReclaimEmissionsVaultMigrationOperation),
Box::new(LendingPoolSetFixedOraclePriceMigrationOperation),
Box::new(LendingPoolUpdateFeesDestinationAccountMigrationOperation),
Box::new(LendingPoolWithdrawFeesMigrationOperation),
Box::new(LendingPoolWithdrawFeesPermissionlessMigrationOperation),
Box::new(LendingPoolWithdrawInsuranceMigrationOperation),
Box::new(MarginfiAccountCloseMigrationOperation),
Box::new(MarginfiAccountCloseOrderMigrationOperation),
Box::new(MarginfiAccountEndExecuteOrderMigrationOperation),
Box::new(MarginfiAccountInitializeMigrationOperation),
Box::new(MarginfiAccountInitializePdaMigrationOperation),
Box::new(MarginfiAccountInitLiqRecordMigrationOperation),
Box::new(MarginfiAccountKeeperCloseOrderMigrationOperation),
Box::new(MarginfiAccountPlaceOrderMigrationOperation),
Box::new(MarginfiAccountSetFreezeMigrationOperation),
Box::new(MarginfiAccountSetKeeperCloseFlagsMigrationOperation),
Box::new(MarginfiAccountStartExecuteOrderMigrationOperation),
Box::new(MarginfiAccountUpdateEmissionsDestinationAccountMigrationOperation),
Box::new(MarginfiGroupConfigureMigrationOperation),
Box::new(MarginfiGroupInitializeMigrationOperation),
Box::new(MigrateCurveMigrationOperation),
Box::new(PanicPauseMigrationOperation),
Box::new(PanicUnpauseMigrationOperation),
Box::new(PanicUnpausePermissionlessMigrationOperation),
Box::new(PropagateFeeStateMigrationOperation),
Box::new(PropagateStakedSettingsMigrationOperation),
Box::new(PurgeDeleverageBalanceMigrationOperation),
Box::new(SolendDepositMigrationOperation),
Box::new(SolendInitObligationMigrationOperation),
Box::new(SolendWithdrawMigrationOperation),
Box::new(StartDeleverageMigrationOperation),
Box::new(StartLiquidationMigrationOperation),
Box::new(SuperAdminDepositMigrationOperation),
Box::new(SuperAdminWithdrawMigrationOperation),
Box::new(TransferToNewAccountMigrationOperation),
Box::new(TransferToNewAccountPdaMigrationOperation),
Box::new(UpdateDeleverageWithdrawalsMigrationOperation),
Box::new(UpdateGroupRateLimiterMigrationOperation),
Box::new(WriteBankMetadataMigrationOperation),
Box::new(CpiEventMigrationOperation),
]
}
fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
vec![]
}
}
pub struct MarginfiV2InstructionWithMetadata(
pub MarginfiV2Instruction,
pub carbon_core::instruction::InstructionMetadata,
pub Vec<solana_instruction::AccountMeta>,
);
impl
From<(
MarginfiV2Instruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
)> for MarginfiV2InstructionWithMetadata
{
fn from(
value: (
MarginfiV2Instruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
),
) -> Self {
MarginfiV2InstructionWithMetadata(value.0, value.1, value.2)
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for MarginfiV2InstructionWithMetadata {
async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let MarginfiV2InstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
MarginfiV2Instruction::ConfigGroupFee { data, .. } => {
let row = config_group_fee_row::ConfigGroupFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::ConfigureBankRateLimits { data, .. } => {
let row = configure_bank_rate_limits_row::ConfigureBankRateLimitsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::ConfigureDeleverageWithdrawalLimit { data, .. } => {
let row = configure_deleverage_withdrawal_limit_row::ConfigureDeleverageWithdrawalLimitRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::ConfigureGroupRateLimits { data, .. } => {
let row = configure_group_rate_limits_row::ConfigureGroupRateLimitsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftDeposit { data, .. } => {
let row = drift_deposit_row::DriftDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftHarvestReward { data, .. } => {
let row = drift_harvest_reward_row::DriftHarvestRewardRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftInitUser { data, .. } => {
let row = drift_init_user_row::DriftInitUserRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftWithdraw { data, .. } => {
let row = drift_withdraw_row::DriftWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EditGlobalFeeState { data, .. } => {
let row = edit_global_fee_state_row::EditGlobalFeeStateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EditStakedSettings { data, .. } => {
let row = edit_staked_settings_row::EditStakedSettingsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EndDeleverage { data, .. } => {
let row = end_deleverage_row::EndDeleverageRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EndLiquidation { data, .. } => {
let row = end_liquidation_row::EndLiquidationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::InitBankMetadata { data, .. } => {
let row = init_bank_metadata_row::InitBankMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::InitGlobalFeeState { data, .. } => {
let row = init_global_fee_state_row::InitGlobalFeeStateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::InitStakedSettings { data, .. } => {
let row = init_staked_settings_row::InitStakedSettingsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::JuplendDeposit { data, .. } => {
let row = juplend_deposit_row::JuplendDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::JuplendInitPosition { data, .. } => {
let row = juplend_init_position_row::JuplendInitPositionRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::JuplendWithdraw { data, .. } => {
let row = juplend_withdraw_row::JuplendWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoDeposit { data, .. } => {
let row = kamino_deposit_row::KaminoDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoHarvestReward { data, .. } => {
let row = kamino_harvest_reward_row::KaminoHarvestRewardRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoInitObligation { data, .. } => {
let row = kamino_init_obligation_row::KaminoInitObligationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoWithdraw { data, .. } => {
let row = kamino_withdraw_row::KaminoWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountBorrow { data, .. } => {
let row = lending_account_borrow_row::LendingAccountBorrowRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountClearEmissions { data, .. } => {
let row = lending_account_clear_emissions_row::LendingAccountClearEmissionsRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountCloseBalance { data, .. } => {
let row =
lending_account_close_balance_row::LendingAccountCloseBalanceRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountDeposit { data, .. } => {
let row = lending_account_deposit_row::LendingAccountDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountEndFlashloan { data, .. } => {
let row =
lending_account_end_flashloan_row::LendingAccountEndFlashloanRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountLiquidate { data, .. } => {
let row = lending_account_liquidate_row::LendingAccountLiquidateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountPulseHealth { data, .. } => {
let row =
lending_account_pulse_health_row::LendingAccountPulseHealthRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountRepay { data, .. } => {
let row = lending_account_repay_row::LendingAccountRepayRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountStartFlashloan { data, .. } => {
let row = lending_account_start_flashloan_row::LendingAccountStartFlashloanRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountWithdraw { data, .. } => {
let row = lending_account_withdraw_row::LendingAccountWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAccrueBankInterest { data, .. } => {
let row = lending_pool_accrue_bank_interest_row::LendingPoolAccrueBankInterestRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBank { data, .. } => {
let row = lending_pool_add_bank_row::LendingPoolAddBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankDrift { data, .. } => {
let row = lending_pool_add_bank_drift_row::LendingPoolAddBankDriftRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankJuplend { data, .. } => {
let row =
lending_pool_add_bank_juplend_row::LendingPoolAddBankJuplendRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankKamino { data, .. } => {
let row = lending_pool_add_bank_kamino_row::LendingPoolAddBankKaminoRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankPermissionless { data, .. } => {
let row = lending_pool_add_bank_permissionless_row::LendingPoolAddBankPermissionlessRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankSolend { data, .. } => {
let row = lending_pool_add_bank_solend_row::LendingPoolAddBankSolendRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankWithSeed { data, .. } => {
let row =
lending_pool_add_bank_with_seed_row::LendingPoolAddBankWithSeedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCloneBank { data, .. } => {
let row = lending_pool_clone_bank_row::LendingPoolCloneBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCloneEmode { data, .. } => {
let row = lending_pool_clone_emode_row::LendingPoolCloneEmodeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCloseBank { data, .. } => {
let row = lending_pool_close_bank_row::LendingPoolCloseBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCollectBankFees { data, .. } => {
let row =
lending_pool_collect_bank_fees_row::LendingPoolCollectBankFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBank { data, .. } => {
let row = lending_pool_configure_bank_row::LendingPoolConfigureBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankEmode { data, .. } => {
let row = lending_pool_configure_bank_emode_row::LendingPoolConfigureBankEmodeRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankInterestOnly { data, .. } => {
let row = lending_pool_configure_bank_interest_only_row::LendingPoolConfigureBankInterestOnlyRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankLimitsOnly { data, .. } => {
let row = lending_pool_configure_bank_limits_only_row::LendingPoolConfigureBankLimitsOnlyRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankOracle { data, .. } => {
let row = lending_pool_configure_bank_oracle_row::LendingPoolConfigureBankOracleRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolForceTokenlessRepayComplete { data, .. } => {
let row = lending_pool_force_tokenless_repay_complete_row::LendingPoolForceTokenlessRepayCompleteRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolHandleBankruptcy { data, .. } => {
let row =
lending_pool_handle_bankruptcy_row::LendingPoolHandleBankruptcyRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolPulseBankPriceCache { data, .. } => {
let row = lending_pool_pulse_bank_price_cache_row::LendingPoolPulseBankPriceCacheRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolReclaimEmissionsVault { data, .. } => {
let row = lending_pool_reclaim_emissions_vault_row::LendingPoolReclaimEmissionsVaultRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolSetFixedOraclePrice { data, .. } => {
let row = lending_pool_set_fixed_oracle_price_row::LendingPoolSetFixedOraclePriceRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolUpdateFeesDestinationAccount { data, .. } => {
let row = lending_pool_update_fees_destination_account_row::LendingPoolUpdateFeesDestinationAccountRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolWithdrawFees { data, .. } => {
let row = lending_pool_withdraw_fees_row::LendingPoolWithdrawFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolWithdrawFeesPermissionless { data, .. } => {
let row = lending_pool_withdraw_fees_permissionless_row::LendingPoolWithdrawFeesPermissionlessRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolWithdrawInsurance { data, .. } => {
let row = lending_pool_withdraw_insurance_row::LendingPoolWithdrawInsuranceRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountClose { data, .. } => {
let row = marginfi_account_close_row::MarginfiAccountCloseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountCloseOrder { data, .. } => {
let row =
marginfi_account_close_order_row::MarginfiAccountCloseOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountEndExecuteOrder { data, .. } => {
let row = marginfi_account_end_execute_order_row::MarginfiAccountEndExecuteOrderRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountInitLiqRecord { data, .. } => {
let row = marginfi_account_init_liq_record_row::MarginfiAccountInitLiqRecordRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountInitialize { data, .. } => {
let row = marginfi_account_initialize_row::MarginfiAccountInitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountInitializePda { data, .. } => {
let row = marginfi_account_initialize_pda_row::MarginfiAccountInitializePdaRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountKeeperCloseOrder { data, .. } => {
let row = marginfi_account_keeper_close_order_row::MarginfiAccountKeeperCloseOrderRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountPlaceOrder { data, .. } => {
let row =
marginfi_account_place_order_row::MarginfiAccountPlaceOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountSetFreeze { data, .. } => {
let row = marginfi_account_set_freeze_row::MarginfiAccountSetFreezeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountSetKeeperCloseFlags { data, .. } => {
let row = marginfi_account_set_keeper_close_flags_row::MarginfiAccountSetKeeperCloseFlagsRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountStartExecuteOrder { data, .. } => {
let row = marginfi_account_start_execute_order_row::MarginfiAccountStartExecuteOrderRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountUpdateEmissionsDestinationAccount {
data,
..
} => {
let row = marginfi_account_update_emissions_destination_account_row::MarginfiAccountUpdateEmissionsDestinationAccountRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiGroupConfigure { data, .. } => {
let row = marginfi_group_configure_row::MarginfiGroupConfigureRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiGroupInitialize { data, .. } => {
let row = marginfi_group_initialize_row::MarginfiGroupInitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MigrateCurve { data, .. } => {
let row = migrate_curve_row::MigrateCurveRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PanicPause { data, .. } => {
let row = panic_pause_row::PanicPauseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PanicUnpause { data, .. } => {
let row = panic_unpause_row::PanicUnpauseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PanicUnpausePermissionless { data, .. } => {
let row =
panic_unpause_permissionless_row::PanicUnpausePermissionlessRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PropagateFeeState { data, .. } => {
let row = propagate_fee_state_row::PropagateFeeStateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PropagateStakedSettings { data, .. } => {
let row = propagate_staked_settings_row::PropagateStakedSettingsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PurgeDeleverageBalance { data, .. } => {
let row = purge_deleverage_balance_row::PurgeDeleverageBalanceRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SolendDeposit { data, .. } => {
let row = solend_deposit_row::SolendDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SolendInitObligation { data, .. } => {
let row = solend_init_obligation_row::SolendInitObligationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SolendWithdraw { data, .. } => {
let row = solend_withdraw_row::SolendWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::StartDeleverage { data, .. } => {
let row = start_deleverage_row::StartDeleverageRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::StartLiquidation { data, .. } => {
let row = start_liquidation_row::StartLiquidationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SuperAdminDeposit { data, .. } => {
let row = super_admin_deposit_row::SuperAdminDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SuperAdminWithdraw { data, .. } => {
let row = super_admin_withdraw_row::SuperAdminWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::TransferToNewAccount { data, .. } => {
let row = transfer_to_new_account_row::TransferToNewAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::TransferToNewAccountPda { data, .. } => {
let row = transfer_to_new_account_pda_row::TransferToNewAccountPdaRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::UpdateDeleverageWithdrawals { data, .. } => {
let row =
update_deleverage_withdrawals_row::UpdateDeleverageWithdrawalsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::UpdateGroupRateLimiter { data, .. } => {
let row = update_group_rate_limiter_row::UpdateGroupRateLimiterRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::WriteBankMetadata { data, .. } => {
let row = write_bank_metadata_row::WriteBankMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MarginfiV2Instruction::CpiEvent { data, .. } => {
let row = cpi_event_row::CpiEventRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
}
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Upsert for MarginfiV2InstructionWithMetadata {
async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let MarginfiV2InstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
MarginfiV2Instruction::ConfigGroupFee { data, .. } => {
let row = config_group_fee_row::ConfigGroupFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::ConfigureBankRateLimits { data, .. } => {
let row = configure_bank_rate_limits_row::ConfigureBankRateLimitsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::ConfigureDeleverageWithdrawalLimit { data, .. } => {
let row = configure_deleverage_withdrawal_limit_row::ConfigureDeleverageWithdrawalLimitRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::ConfigureGroupRateLimits { data, .. } => {
let row = configure_group_rate_limits_row::ConfigureGroupRateLimitsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftDeposit { data, .. } => {
let row = drift_deposit_row::DriftDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftHarvestReward { data, .. } => {
let row = drift_harvest_reward_row::DriftHarvestRewardRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftInitUser { data, .. } => {
let row = drift_init_user_row::DriftInitUserRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::DriftWithdraw { data, .. } => {
let row = drift_withdraw_row::DriftWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EditGlobalFeeState { data, .. } => {
let row = edit_global_fee_state_row::EditGlobalFeeStateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EditStakedSettings { data, .. } => {
let row = edit_staked_settings_row::EditStakedSettingsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EndDeleverage { data, .. } => {
let row = end_deleverage_row::EndDeleverageRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::EndLiquidation { data, .. } => {
let row = end_liquidation_row::EndLiquidationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::InitBankMetadata { data, .. } => {
let row = init_bank_metadata_row::InitBankMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::InitGlobalFeeState { data, .. } => {
let row = init_global_fee_state_row::InitGlobalFeeStateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::InitStakedSettings { data, .. } => {
let row = init_staked_settings_row::InitStakedSettingsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::JuplendDeposit { data, .. } => {
let row = juplend_deposit_row::JuplendDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::JuplendInitPosition { data, .. } => {
let row = juplend_init_position_row::JuplendInitPositionRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::JuplendWithdraw { data, .. } => {
let row = juplend_withdraw_row::JuplendWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoDeposit { data, .. } => {
let row = kamino_deposit_row::KaminoDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoHarvestReward { data, .. } => {
let row = kamino_harvest_reward_row::KaminoHarvestRewardRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoInitObligation { data, .. } => {
let row = kamino_init_obligation_row::KaminoInitObligationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::KaminoWithdraw { data, .. } => {
let row = kamino_withdraw_row::KaminoWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountBorrow { data, .. } => {
let row = lending_account_borrow_row::LendingAccountBorrowRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountClearEmissions { data, .. } => {
let row = lending_account_clear_emissions_row::LendingAccountClearEmissionsRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountCloseBalance { data, .. } => {
let row =
lending_account_close_balance_row::LendingAccountCloseBalanceRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountDeposit { data, .. } => {
let row = lending_account_deposit_row::LendingAccountDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountEndFlashloan { data, .. } => {
let row =
lending_account_end_flashloan_row::LendingAccountEndFlashloanRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountLiquidate { data, .. } => {
let row = lending_account_liquidate_row::LendingAccountLiquidateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountPulseHealth { data, .. } => {
let row =
lending_account_pulse_health_row::LendingAccountPulseHealthRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountRepay { data, .. } => {
let row = lending_account_repay_row::LendingAccountRepayRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountStartFlashloan { data, .. } => {
let row = lending_account_start_flashloan_row::LendingAccountStartFlashloanRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingAccountWithdraw { data, .. } => {
let row = lending_account_withdraw_row::LendingAccountWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAccrueBankInterest { data, .. } => {
let row = lending_pool_accrue_bank_interest_row::LendingPoolAccrueBankInterestRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBank { data, .. } => {
let row = lending_pool_add_bank_row::LendingPoolAddBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankDrift { data, .. } => {
let row = lending_pool_add_bank_drift_row::LendingPoolAddBankDriftRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankJuplend { data, .. } => {
let row =
lending_pool_add_bank_juplend_row::LendingPoolAddBankJuplendRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankKamino { data, .. } => {
let row = lending_pool_add_bank_kamino_row::LendingPoolAddBankKaminoRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankPermissionless { data, .. } => {
let row = lending_pool_add_bank_permissionless_row::LendingPoolAddBankPermissionlessRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankSolend { data, .. } => {
let row = lending_pool_add_bank_solend_row::LendingPoolAddBankSolendRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolAddBankWithSeed { data, .. } => {
let row =
lending_pool_add_bank_with_seed_row::LendingPoolAddBankWithSeedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCloneBank { data, .. } => {
let row = lending_pool_clone_bank_row::LendingPoolCloneBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCloneEmode { data, .. } => {
let row = lending_pool_clone_emode_row::LendingPoolCloneEmodeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCloseBank { data, .. } => {
let row = lending_pool_close_bank_row::LendingPoolCloseBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolCollectBankFees { data, .. } => {
let row =
lending_pool_collect_bank_fees_row::LendingPoolCollectBankFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBank { data, .. } => {
let row = lending_pool_configure_bank_row::LendingPoolConfigureBankRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankEmode { data, .. } => {
let row = lending_pool_configure_bank_emode_row::LendingPoolConfigureBankEmodeRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankInterestOnly { data, .. } => {
let row = lending_pool_configure_bank_interest_only_row::LendingPoolConfigureBankInterestOnlyRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankLimitsOnly { data, .. } => {
let row = lending_pool_configure_bank_limits_only_row::LendingPoolConfigureBankLimitsOnlyRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolConfigureBankOracle { data, .. } => {
let row = lending_pool_configure_bank_oracle_row::LendingPoolConfigureBankOracleRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolForceTokenlessRepayComplete { data, .. } => {
let row = lending_pool_force_tokenless_repay_complete_row::LendingPoolForceTokenlessRepayCompleteRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolHandleBankruptcy { data, .. } => {
let row =
lending_pool_handle_bankruptcy_row::LendingPoolHandleBankruptcyRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolPulseBankPriceCache { data, .. } => {
let row = lending_pool_pulse_bank_price_cache_row::LendingPoolPulseBankPriceCacheRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolReclaimEmissionsVault { data, .. } => {
let row = lending_pool_reclaim_emissions_vault_row::LendingPoolReclaimEmissionsVaultRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolSetFixedOraclePrice { data, .. } => {
let row = lending_pool_set_fixed_oracle_price_row::LendingPoolSetFixedOraclePriceRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolUpdateFeesDestinationAccount { data, .. } => {
let row = lending_pool_update_fees_destination_account_row::LendingPoolUpdateFeesDestinationAccountRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolWithdrawFees { data, .. } => {
let row = lending_pool_withdraw_fees_row::LendingPoolWithdrawFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolWithdrawFeesPermissionless { data, .. } => {
let row = lending_pool_withdraw_fees_permissionless_row::LendingPoolWithdrawFeesPermissionlessRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::LendingPoolWithdrawInsurance { data, .. } => {
let row = lending_pool_withdraw_insurance_row::LendingPoolWithdrawInsuranceRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountClose { data, .. } => {
let row = marginfi_account_close_row::MarginfiAccountCloseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountCloseOrder { data, .. } => {
let row =
marginfi_account_close_order_row::MarginfiAccountCloseOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountEndExecuteOrder { data, .. } => {
let row = marginfi_account_end_execute_order_row::MarginfiAccountEndExecuteOrderRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountInitLiqRecord { data, .. } => {
let row = marginfi_account_init_liq_record_row::MarginfiAccountInitLiqRecordRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountInitialize { data, .. } => {
let row = marginfi_account_initialize_row::MarginfiAccountInitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountInitializePda { data, .. } => {
let row = marginfi_account_initialize_pda_row::MarginfiAccountInitializePdaRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountKeeperCloseOrder { data, .. } => {
let row = marginfi_account_keeper_close_order_row::MarginfiAccountKeeperCloseOrderRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountPlaceOrder { data, .. } => {
let row =
marginfi_account_place_order_row::MarginfiAccountPlaceOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountSetFreeze { data, .. } => {
let row = marginfi_account_set_freeze_row::MarginfiAccountSetFreezeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountSetKeeperCloseFlags { data, .. } => {
let row = marginfi_account_set_keeper_close_flags_row::MarginfiAccountSetKeeperCloseFlagsRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountStartExecuteOrder { data, .. } => {
let row = marginfi_account_start_execute_order_row::MarginfiAccountStartExecuteOrderRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiAccountUpdateEmissionsDestinationAccount {
data,
..
} => {
let row = marginfi_account_update_emissions_destination_account_row::MarginfiAccountUpdateEmissionsDestinationAccountRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiGroupConfigure { data, .. } => {
let row = marginfi_group_configure_row::MarginfiGroupConfigureRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MarginfiGroupInitialize { data, .. } => {
let row = marginfi_group_initialize_row::MarginfiGroupInitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::MigrateCurve { data, .. } => {
let row = migrate_curve_row::MigrateCurveRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PanicPause { data, .. } => {
let row = panic_pause_row::PanicPauseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PanicUnpause { data, .. } => {
let row = panic_unpause_row::PanicUnpauseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PanicUnpausePermissionless { data, .. } => {
let row =
panic_unpause_permissionless_row::PanicUnpausePermissionlessRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PropagateFeeState { data, .. } => {
let row = propagate_fee_state_row::PropagateFeeStateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PropagateStakedSettings { data, .. } => {
let row = propagate_staked_settings_row::PropagateStakedSettingsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::PurgeDeleverageBalance { data, .. } => {
let row = purge_deleverage_balance_row::PurgeDeleverageBalanceRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SolendDeposit { data, .. } => {
let row = solend_deposit_row::SolendDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SolendInitObligation { data, .. } => {
let row = solend_init_obligation_row::SolendInitObligationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SolendWithdraw { data, .. } => {
let row = solend_withdraw_row::SolendWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::StartDeleverage { data, .. } => {
let row = start_deleverage_row::StartDeleverageRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::StartLiquidation { data, .. } => {
let row = start_liquidation_row::StartLiquidationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SuperAdminDeposit { data, .. } => {
let row = super_admin_deposit_row::SuperAdminDepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::SuperAdminWithdraw { data, .. } => {
let row = super_admin_withdraw_row::SuperAdminWithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::TransferToNewAccount { data, .. } => {
let row = transfer_to_new_account_row::TransferToNewAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::TransferToNewAccountPda { data, .. } => {
let row = transfer_to_new_account_pda_row::TransferToNewAccountPdaRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::UpdateDeleverageWithdrawals { data, .. } => {
let row =
update_deleverage_withdrawals_row::UpdateDeleverageWithdrawalsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::UpdateGroupRateLimiter { data, .. } => {
let row = update_group_rate_limiter_row::UpdateGroupRateLimiterRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::WriteBankMetadata { data, .. } => {
let row = write_bank_metadata_row::WriteBankMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MarginfiV2Instruction::CpiEvent { data, .. } => {
let row = cpi_event_row::CpiEventRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
}
}
}