pub mod claim_creator_trading_fee_row;
pub mod claim_partner_pool_creation_fee_row;
pub mod claim_protocol_fee_row;
pub mod claim_protocol_pool_creation_fee_row;
pub mod claim_trading_fee_row;
pub mod close_claim_protocol_fee_operator_row;
pub mod close_operator_account_row;
pub mod cpi_event_row;
pub mod create_config_row;
pub mod create_locker_row;
pub mod create_operator_account_row;
pub mod create_partner_metadata_row;
pub mod create_virtual_pool_metadata_row;
pub mod creator_withdraw_surplus_row;
pub mod initialize_virtual_pool_with_spl_token_row;
pub mod initialize_virtual_pool_with_token2022_row;
pub mod migrate_meteora_damm_claim_lp_token_row;
pub mod migrate_meteora_damm_lock_lp_token_row;
pub mod migrate_meteora_damm_row;
pub mod migration_damm_v2_create_metadata_row;
pub mod migration_damm_v2_row;
pub mod migration_meteora_damm_create_metadata_row;
pub mod partner_withdraw_surplus_row;
pub mod swap2_row;
pub mod swap_row;
pub mod transfer_pool_creator_row;
pub mod withdraw_leftover_row;
pub mod withdraw_migration_fee_row;
pub mod zap_protocol_fee_row;
pub use self::{
claim_creator_trading_fee_row::*, claim_partner_pool_creation_fee_row::*,
claim_protocol_fee_row::*, claim_protocol_pool_creation_fee_row::*, claim_trading_fee_row::*,
close_claim_protocol_fee_operator_row::*, close_operator_account_row::*, cpi_event_row::*,
create_config_row::*, create_locker_row::*, create_operator_account_row::*,
create_partner_metadata_row::*, create_virtual_pool_metadata_row::*,
creator_withdraw_surplus_row::*, initialize_virtual_pool_with_spl_token_row::*,
initialize_virtual_pool_with_token2022_row::*, migrate_meteora_damm_claim_lp_token_row::*,
migrate_meteora_damm_lock_lp_token_row::*, migrate_meteora_damm_row::*,
migration_damm_v2_create_metadata_row::*, migration_damm_v2_row::*,
migration_meteora_damm_create_metadata_row::*, partner_withdraw_surplus_row::*, swap2_row::*,
swap_row::*, transfer_pool_creator_row::*, withdraw_leftover_row::*,
withdraw_migration_fee_row::*, zap_protocol_fee_row::*,
};
use super::MeteoraDbcInstruction;
pub struct MeteoraDbcInstructionsMigration;
impl sqlx_migrator::Migration<sqlx::Postgres> for MeteoraDbcInstructionsMigration {
fn app(&self) -> &str {
"meteora-dbc"
}
fn name(&self) -> &str {
"meteora_dbc_instructions"
}
fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
vec![
Box::new(ClaimCreatorTradingFeeMigrationOperation),
Box::new(ClaimPartnerPoolCreationFeeMigrationOperation),
Box::new(ClaimProtocolFeeMigrationOperation),
Box::new(ClaimProtocolPoolCreationFeeMigrationOperation),
Box::new(ClaimTradingFeeMigrationOperation),
Box::new(CloseClaimProtocolFeeOperatorMigrationOperation),
Box::new(CloseOperatorAccountMigrationOperation),
Box::new(CreateConfigMigrationOperation),
Box::new(CreateLockerMigrationOperation),
Box::new(CreateOperatorAccountMigrationOperation),
Box::new(CreatePartnerMetadataMigrationOperation),
Box::new(CreateVirtualPoolMetadataMigrationOperation),
Box::new(CreatorWithdrawSurplusMigrationOperation),
Box::new(InitializeVirtualPoolWithSplTokenMigrationOperation),
Box::new(InitializeVirtualPoolWithToken2022MigrationOperation),
Box::new(MigrateMeteoraDammMigrationOperation),
Box::new(MigrateMeteoraDammClaimLpTokenMigrationOperation),
Box::new(MigrateMeteoraDammLockLpTokenMigrationOperation),
Box::new(MigrationDammV2MigrationOperation),
Box::new(MigrationDammV2CreateMetadataMigrationOperation),
Box::new(MigrationMeteoraDammCreateMetadataMigrationOperation),
Box::new(PartnerWithdrawSurplusMigrationOperation),
Box::new(SwapMigrationOperation),
Box::new(Swap2MigrationOperation),
Box::new(TransferPoolCreatorMigrationOperation),
Box::new(WithdrawLeftoverMigrationOperation),
Box::new(WithdrawMigrationFeeMigrationOperation),
Box::new(ZapProtocolFeeMigrationOperation),
Box::new(CpiEventMigrationOperation),
]
}
fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
vec![]
}
}
pub struct MeteoraDbcInstructionWithMetadata(
pub MeteoraDbcInstruction,
pub carbon_core::instruction::InstructionMetadata,
pub Vec<solana_instruction::AccountMeta>,
);
impl
From<(
MeteoraDbcInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
)> for MeteoraDbcInstructionWithMetadata
{
fn from(
value: (
MeteoraDbcInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
),
) -> Self {
MeteoraDbcInstructionWithMetadata(value.0, value.1, value.2)
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for MeteoraDbcInstructionWithMetadata {
async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let MeteoraDbcInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
MeteoraDbcInstruction::ClaimCreatorTradingFee { data, .. } => {
let row = claim_creator_trading_fee_row::ClaimCreatorTradingFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimPartnerPoolCreationFee { data, .. } => {
let row =
claim_partner_pool_creation_fee_row::ClaimPartnerPoolCreationFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimProtocolFee { data, .. } => {
let row = claim_protocol_fee_row::ClaimProtocolFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimProtocolPoolCreationFee { data, .. } => {
let row = claim_protocol_pool_creation_fee_row::ClaimProtocolPoolCreationFeeRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimTradingFee { data, .. } => {
let row = claim_trading_fee_row::ClaimTradingFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CloseClaimProtocolFeeOperator { data, .. } => {
let row = close_claim_protocol_fee_operator_row::CloseClaimProtocolFeeOperatorRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CloseOperatorAccount { data, .. } => {
let row = close_operator_account_row::CloseOperatorAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateConfig { data, .. } => {
let row = create_config_row::CreateConfigRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateLocker { data, .. } => {
let row = create_locker_row::CreateLockerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateOperatorAccount { data, .. } => {
let row = create_operator_account_row::CreateOperatorAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreatePartnerMetadata { data, .. } => {
let row = create_partner_metadata_row::CreatePartnerMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateVirtualPoolMetadata { data, .. } => {
let row =
create_virtual_pool_metadata_row::CreateVirtualPoolMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreatorWithdrawSurplus { data, .. } => {
let row = creator_withdraw_surplus_row::CreatorWithdrawSurplusRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::InitializeVirtualPoolWithSplToken { data, .. } => {
let row = initialize_virtual_pool_with_spl_token_row::InitializeVirtualPoolWithSplTokenRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::InitializeVirtualPoolWithToken2022 { data, .. } => {
let row = initialize_virtual_pool_with_token2022_row::InitializeVirtualPoolWithToken2022Row::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrateMeteoraDamm { data, .. } => {
let row = migrate_meteora_damm_row::MigrateMeteoraDammRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrateMeteoraDammClaimLpToken { data, .. } => {
let row = migrate_meteora_damm_claim_lp_token_row::MigrateMeteoraDammClaimLpTokenRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrateMeteoraDammLockLpToken { data, .. } => {
let row = migrate_meteora_damm_lock_lp_token_row::MigrateMeteoraDammLockLpTokenRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrationDammV2 { data, .. } => {
let row = migration_damm_v2_row::MigrationDammV2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrationDammV2CreateMetadata { data, .. } => {
let row = migration_damm_v2_create_metadata_row::MigrationDammV2CreateMetadataRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrationMeteoraDammCreateMetadata { data, .. } => {
let row = migration_meteora_damm_create_metadata_row::MigrationMeteoraDammCreateMetadataRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::PartnerWithdrawSurplus { data, .. } => {
let row = partner_withdraw_surplus_row::PartnerWithdrawSurplusRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::Swap { data, .. } => {
let row = swap_row::SwapRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::Swap2 { data, .. } => {
let row = swap2_row::Swap2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::TransferPoolCreator { data, .. } => {
let row = transfer_pool_creator_row::TransferPoolCreatorRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::WithdrawLeftover { data, .. } => {
let row = withdraw_leftover_row::WithdrawLeftoverRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::WithdrawMigrationFee { data, .. } => {
let row = withdraw_migration_fee_row::WithdrawMigrationFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ZapProtocolFee { data, .. } => {
let row = zap_protocol_fee_row::ZapProtocolFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::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 MeteoraDbcInstructionWithMetadata {
async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let MeteoraDbcInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
MeteoraDbcInstruction::ClaimCreatorTradingFee { data, .. } => {
let row = claim_creator_trading_fee_row::ClaimCreatorTradingFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimPartnerPoolCreationFee { data, .. } => {
let row =
claim_partner_pool_creation_fee_row::ClaimPartnerPoolCreationFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimProtocolFee { data, .. } => {
let row = claim_protocol_fee_row::ClaimProtocolFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimProtocolPoolCreationFee { data, .. } => {
let row = claim_protocol_pool_creation_fee_row::ClaimProtocolPoolCreationFeeRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ClaimTradingFee { data, .. } => {
let row = claim_trading_fee_row::ClaimTradingFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CloseClaimProtocolFeeOperator { data, .. } => {
let row = close_claim_protocol_fee_operator_row::CloseClaimProtocolFeeOperatorRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CloseOperatorAccount { data, .. } => {
let row = close_operator_account_row::CloseOperatorAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateConfig { data, .. } => {
let row = create_config_row::CreateConfigRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateLocker { data, .. } => {
let row = create_locker_row::CreateLockerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateOperatorAccount { data, .. } => {
let row = create_operator_account_row::CreateOperatorAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreatePartnerMetadata { data, .. } => {
let row = create_partner_metadata_row::CreatePartnerMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreateVirtualPoolMetadata { data, .. } => {
let row =
create_virtual_pool_metadata_row::CreateVirtualPoolMetadataRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CreatorWithdrawSurplus { data, .. } => {
let row = creator_withdraw_surplus_row::CreatorWithdrawSurplusRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::InitializeVirtualPoolWithSplToken { data, .. } => {
let row = initialize_virtual_pool_with_spl_token_row::InitializeVirtualPoolWithSplTokenRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::InitializeVirtualPoolWithToken2022 { data, .. } => {
let row = initialize_virtual_pool_with_token2022_row::InitializeVirtualPoolWithToken2022Row::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrateMeteoraDamm { data, .. } => {
let row = migrate_meteora_damm_row::MigrateMeteoraDammRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrateMeteoraDammClaimLpToken { data, .. } => {
let row = migrate_meteora_damm_claim_lp_token_row::MigrateMeteoraDammClaimLpTokenRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrateMeteoraDammLockLpToken { data, .. } => {
let row = migrate_meteora_damm_lock_lp_token_row::MigrateMeteoraDammLockLpTokenRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrationDammV2 { data, .. } => {
let row = migration_damm_v2_row::MigrationDammV2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrationDammV2CreateMetadata { data, .. } => {
let row = migration_damm_v2_create_metadata_row::MigrationDammV2CreateMetadataRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::MigrationMeteoraDammCreateMetadata { data, .. } => {
let row = migration_meteora_damm_create_metadata_row::MigrationMeteoraDammCreateMetadataRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::PartnerWithdrawSurplus { data, .. } => {
let row = partner_withdraw_surplus_row::PartnerWithdrawSurplusRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::Swap { data, .. } => {
let row = swap_row::SwapRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::Swap2 { data, .. } => {
let row = swap2_row::Swap2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::TransferPoolCreator { data, .. } => {
let row = transfer_pool_creator_row::TransferPoolCreatorRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::WithdrawLeftover { data, .. } => {
let row = withdraw_leftover_row::WithdrawLeftoverRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::WithdrawMigrationFee { data, .. } => {
let row = withdraw_migration_fee_row::WithdrawMigrationFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::ZapProtocolFee { data, .. } => {
let row = zap_protocol_fee_row::ZapProtocolFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
MeteoraDbcInstruction::CpiEvent { data, .. } => {
let row = cpi_event_row::CpiEventRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
}
}
}