pub mod add_operators_row;
pub mod buy_token_row;
pub mod cancel_authority_transfer_row;
pub mod close_bonding_curve_vault_row;
pub mod collect_meteora_trading_fees_row;
pub mod collect_meteora_trading_fees_v2_row;
pub mod collect_trading_fees_row;
pub mod collect_trading_fees_v2_row;
pub mod complete_authority_transfer_row;
pub mod cpi_event_row;
pub mod create_meteora_pool_row;
pub mod create_raydium_pool_row;
pub mod create_raydium_random_pool_row;
pub mod create_token_fallback_row;
pub mod create_token_row;
pub mod deploy_bonding_curve_fallback_row;
pub mod deploy_bonding_curve_row;
pub mod deposit_into_raydium_row;
pub mod graduate_row;
pub mod initialize_row;
pub mod initiate_authority_transfer_row;
pub mod lock_raydium_liquidity_row;
pub mod remove_operators_row;
pub mod sell_token_row;
pub mod split_post_graduation_trading_fees_row;
pub mod split_trading_fees_row;
pub mod swap_sol_for_tokens_on_raydium_row;
pub mod swap_tokens_for_sol_on_raydium_row;
pub mod toggle_paused_row;
pub mod update_config_row;
pub use self::{
add_operators_row::*, buy_token_row::*, cancel_authority_transfer_row::*,
close_bonding_curve_vault_row::*, collect_meteora_trading_fees_row::*,
collect_meteora_trading_fees_v2_row::*, collect_trading_fees_row::*,
collect_trading_fees_v2_row::*, complete_authority_transfer_row::*, cpi_event_row::*,
create_meteora_pool_row::*, create_raydium_pool_row::*, create_raydium_random_pool_row::*,
create_token_fallback_row::*, create_token_row::*, deploy_bonding_curve_fallback_row::*,
deploy_bonding_curve_row::*, deposit_into_raydium_row::*, graduate_row::*, initialize_row::*,
initiate_authority_transfer_row::*, lock_raydium_liquidity_row::*, remove_operators_row::*,
sell_token_row::*, split_post_graduation_trading_fees_row::*, split_trading_fees_row::*,
swap_sol_for_tokens_on_raydium_row::*, swap_tokens_for_sol_on_raydium_row::*,
toggle_paused_row::*, update_config_row::*,
};
use super::BoopInstruction;
pub struct BoopInstructionsMigration;
impl sqlx_migrator::Migration<sqlx::Postgres> for BoopInstructionsMigration {
fn app(&self) -> &str {
"boop"
}
fn name(&self) -> &str {
"boop_instructions"
}
fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
vec![
Box::new(AddOperatorsMigrationOperation),
Box::new(BuyTokenMigrationOperation),
Box::new(CancelAuthorityTransferMigrationOperation),
Box::new(CloseBondingCurveVaultMigrationOperation),
Box::new(CollectMeteoraTradingFeesMigrationOperation),
Box::new(CollectMeteoraTradingFeesV2MigrationOperation),
Box::new(CollectTradingFeesMigrationOperation),
Box::new(CollectTradingFeesV2MigrationOperation),
Box::new(CompleteAuthorityTransferMigrationOperation),
Box::new(CreateMeteoraPoolMigrationOperation),
Box::new(CreateRaydiumPoolMigrationOperation),
Box::new(CreateRaydiumRandomPoolMigrationOperation),
Box::new(CreateTokenMigrationOperation),
Box::new(CreateTokenFallbackMigrationOperation),
Box::new(DeployBondingCurveMigrationOperation),
Box::new(DeployBondingCurveFallbackMigrationOperation),
Box::new(DepositIntoRaydiumMigrationOperation),
Box::new(GraduateMigrationOperation),
Box::new(InitializeMigrationOperation),
Box::new(InitiateAuthorityTransferMigrationOperation),
Box::new(LockRaydiumLiquidityMigrationOperation),
Box::new(RemoveOperatorsMigrationOperation),
Box::new(SellTokenMigrationOperation),
Box::new(SplitPostGraduationTradingFeesMigrationOperation),
Box::new(SplitTradingFeesMigrationOperation),
Box::new(SwapSolForTokensOnRaydiumMigrationOperation),
Box::new(SwapTokensForSolOnRaydiumMigrationOperation),
Box::new(TogglePausedMigrationOperation),
Box::new(UpdateConfigMigrationOperation),
Box::new(CpiEventMigrationOperation),
]
}
fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
vec![]
}
}
pub struct BoopInstructionWithMetadata(
pub BoopInstruction,
pub carbon_core::instruction::InstructionMetadata,
pub Vec<solana_instruction::AccountMeta>,
);
impl
From<(
BoopInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
)> for BoopInstructionWithMetadata
{
fn from(
value: (
BoopInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
),
) -> Self {
BoopInstructionWithMetadata(value.0, value.1, value.2)
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for BoopInstructionWithMetadata {
async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let BoopInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
BoopInstruction::AddOperators { data, .. } => {
let row = add_operators_row::AddOperatorsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::BuyToken { data, .. } => {
let row = buy_token_row::BuyTokenRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CancelAuthorityTransfer { data, .. } => {
let row = cancel_authority_transfer_row::CancelAuthorityTransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CloseBondingCurveVault { data, .. } => {
let row = close_bonding_curve_vault_row::CloseBondingCurveVaultRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CollectMeteoraTradingFees { data, .. } => {
let row =
collect_meteora_trading_fees_row::CollectMeteoraTradingFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CollectMeteoraTradingFeesV2 { data, .. } => {
let row =
collect_meteora_trading_fees_v2_row::CollectMeteoraTradingFeesV2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CollectTradingFees { data, .. } => {
let row = collect_trading_fees_row::CollectTradingFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CollectTradingFeesV2 { data, .. } => {
let row = collect_trading_fees_v2_row::CollectTradingFeesV2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CompleteAuthorityTransfer { data, .. } => {
let row = complete_authority_transfer_row::CompleteAuthorityTransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CreateMeteoraPool { data, .. } => {
let row = create_meteora_pool_row::CreateMeteoraPoolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CreateRaydiumPool { data, .. } => {
let row = create_raydium_pool_row::CreateRaydiumPoolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CreateRaydiumRandomPool { data, .. } => {
let row = create_raydium_random_pool_row::CreateRaydiumRandomPoolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CreateToken { data, .. } => {
let row = create_token_row::CreateTokenRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::CreateTokenFallback { data, .. } => {
let row = create_token_fallback_row::CreateTokenFallbackRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::DeployBondingCurve { data, .. } => {
let row = deploy_bonding_curve_row::DeployBondingCurveRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::DeployBondingCurveFallback { data, .. } => {
let row =
deploy_bonding_curve_fallback_row::DeployBondingCurveFallbackRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::DepositIntoRaydium { data, .. } => {
let row = deposit_into_raydium_row::DepositIntoRaydiumRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::Graduate { data, .. } => {
let row = graduate_row::GraduateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::Initialize { data, .. } => {
let row = initialize_row::InitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::InitiateAuthorityTransfer { data, .. } => {
let row = initiate_authority_transfer_row::InitiateAuthorityTransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::LockRaydiumLiquidity { data, .. } => {
let row = lock_raydium_liquidity_row::LockRaydiumLiquidityRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::RemoveOperators { data, .. } => {
let row = remove_operators_row::RemoveOperatorsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::SellToken { data, .. } => {
let row = sell_token_row::SellTokenRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::SplitPostGraduationTradingFees { data, .. } => {
let row = split_post_graduation_trading_fees_row::SplitPostGraduationTradingFeesRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
BoopInstruction::SplitTradingFees { data, .. } => {
let row = split_trading_fees_row::SplitTradingFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::SwapSolForTokensOnRaydium { data, .. } => {
let row =
swap_sol_for_tokens_on_raydium_row::SwapSolForTokensOnRaydiumRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::SwapTokensForSolOnRaydium { data, .. } => {
let row =
swap_tokens_for_sol_on_raydium_row::SwapTokensForSolOnRaydiumRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::TogglePaused { data, .. } => {
let row = toggle_paused_row::TogglePausedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::UpdateConfig { data, .. } => {
let row = update_config_row::UpdateConfigRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
BoopInstruction::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 BoopInstructionWithMetadata {
async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let BoopInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
BoopInstruction::AddOperators { data, .. } => {
let row = add_operators_row::AddOperatorsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::BuyToken { data, .. } => {
let row = buy_token_row::BuyTokenRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CancelAuthorityTransfer { data, .. } => {
let row = cancel_authority_transfer_row::CancelAuthorityTransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CloseBondingCurveVault { data, .. } => {
let row = close_bonding_curve_vault_row::CloseBondingCurveVaultRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CollectMeteoraTradingFees { data, .. } => {
let row =
collect_meteora_trading_fees_row::CollectMeteoraTradingFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CollectMeteoraTradingFeesV2 { data, .. } => {
let row =
collect_meteora_trading_fees_v2_row::CollectMeteoraTradingFeesV2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CollectTradingFees { data, .. } => {
let row = collect_trading_fees_row::CollectTradingFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CollectTradingFeesV2 { data, .. } => {
let row = collect_trading_fees_v2_row::CollectTradingFeesV2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CompleteAuthorityTransfer { data, .. } => {
let row = complete_authority_transfer_row::CompleteAuthorityTransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CreateMeteoraPool { data, .. } => {
let row = create_meteora_pool_row::CreateMeteoraPoolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CreateRaydiumPool { data, .. } => {
let row = create_raydium_pool_row::CreateRaydiumPoolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CreateRaydiumRandomPool { data, .. } => {
let row = create_raydium_random_pool_row::CreateRaydiumRandomPoolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CreateToken { data, .. } => {
let row = create_token_row::CreateTokenRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CreateTokenFallback { data, .. } => {
let row = create_token_fallback_row::CreateTokenFallbackRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::DeployBondingCurve { data, .. } => {
let row = deploy_bonding_curve_row::DeployBondingCurveRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::DeployBondingCurveFallback { data, .. } => {
let row =
deploy_bonding_curve_fallback_row::DeployBondingCurveFallbackRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::DepositIntoRaydium { data, .. } => {
let row = deposit_into_raydium_row::DepositIntoRaydiumRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::Graduate { data, .. } => {
let row = graduate_row::GraduateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::Initialize { data, .. } => {
let row = initialize_row::InitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::InitiateAuthorityTransfer { data, .. } => {
let row = initiate_authority_transfer_row::InitiateAuthorityTransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::LockRaydiumLiquidity { data, .. } => {
let row = lock_raydium_liquidity_row::LockRaydiumLiquidityRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::RemoveOperators { data, .. } => {
let row = remove_operators_row::RemoveOperatorsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::SellToken { data, .. } => {
let row = sell_token_row::SellTokenRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::SplitPostGraduationTradingFees { data, .. } => {
let row = split_post_graduation_trading_fees_row::SplitPostGraduationTradingFeesRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::SplitTradingFees { data, .. } => {
let row = split_trading_fees_row::SplitTradingFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::SwapSolForTokensOnRaydium { data, .. } => {
let row =
swap_sol_for_tokens_on_raydium_row::SwapSolForTokensOnRaydiumRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::SwapTokensForSolOnRaydium { data, .. } => {
let row =
swap_tokens_for_sol_on_raydium_row::SwapTokensForSolOnRaydiumRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::TogglePaused { data, .. } => {
let row = toggle_paused_row::TogglePausedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::UpdateConfig { data, .. } => {
let row = update_config_row::UpdateConfigRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
BoopInstruction::CpiEvent { data, .. } => {
let row = cpi_event_row::CpiEventRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
}
}
}