pub mod close_empty_token_account_row;
pub mod close_order_row;
pub mod cpi_event_row;
pub mod create_referral_token_account_idempotent_row;
pub mod fill_order_row;
pub mod init_market_ledger_idempotent_row;
pub mod open_order_row;
pub mod swap2_row;
pub mod swap2_with_destination_native_row;
pub mod swap2_with_destination_row;
pub mod swap_row;
pub mod swap_with_destination_native_row;
pub mod swap_with_destination_row;
pub mod transfer_fee_row;
pub mod transfer_sol_row;
pub mod transfer_to_sponsor_row;
pub mod unwrap_sol_row;
pub mod wrap_sol_row;
pub use self::{
close_empty_token_account_row::*, close_order_row::*, cpi_event_row::*,
create_referral_token_account_idempotent_row::*, fill_order_row::*,
init_market_ledger_idempotent_row::*, open_order_row::*, swap2_row::*,
swap2_with_destination_native_row::*, swap2_with_destination_row::*, swap_row::*,
swap_with_destination_native_row::*, swap_with_destination_row::*, transfer_fee_row::*,
transfer_sol_row::*, transfer_to_sponsor_row::*, unwrap_sol_row::*, wrap_sol_row::*,
};
use super::DflowAggregatorV4Instruction;
pub struct DflowAggregatorV4InstructionsMigration;
impl sqlx_migrator::Migration<sqlx::Postgres> for DflowAggregatorV4InstructionsMigration {
fn app(&self) -> &str {
"dflow-aggregator-v4"
}
fn name(&self) -> &str {
"dflow_aggregator_v4_instructions"
}
fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
vec![
Box::new(CloseEmptyTokenAccountMigrationOperation),
Box::new(CloseOrderMigrationOperation),
Box::new(CreateReferralTokenAccountIdempotentMigrationOperation),
Box::new(FillOrderMigrationOperation),
Box::new(InitMarketLedgerIdempotentMigrationOperation),
Box::new(OpenOrderMigrationOperation),
Box::new(SwapMigrationOperation),
Box::new(Swap2MigrationOperation),
Box::new(Swap2WithDestinationMigrationOperation),
Box::new(Swap2WithDestinationNativeMigrationOperation),
Box::new(SwapWithDestinationMigrationOperation),
Box::new(SwapWithDestinationNativeMigrationOperation),
Box::new(TransferFeeMigrationOperation),
Box::new(TransferSolMigrationOperation),
Box::new(TransferToSponsorMigrationOperation),
Box::new(UnwrapSolMigrationOperation),
Box::new(WrapSolMigrationOperation),
Box::new(CpiEventMigrationOperation),
]
}
fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
vec![]
}
}
pub struct DflowAggregatorV4InstructionWithMetadata(
pub DflowAggregatorV4Instruction,
pub carbon_core::instruction::InstructionMetadata,
pub Vec<solana_instruction::AccountMeta>,
);
impl
From<(
DflowAggregatorV4Instruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
)> for DflowAggregatorV4InstructionWithMetadata
{
fn from(
value: (
DflowAggregatorV4Instruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
),
) -> Self {
DflowAggregatorV4InstructionWithMetadata(value.0, value.1, value.2)
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for DflowAggregatorV4InstructionWithMetadata {
async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let DflowAggregatorV4InstructionWithMetadata(decoded_instruction, metadata, raw_accounts) =
self;
match decoded_instruction {
DflowAggregatorV4Instruction::CloseEmptyTokenAccount { data, .. } => {
let row = close_empty_token_account_row::CloseEmptyTokenAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::CloseOrder { data, .. } => {
let row = close_order_row::CloseOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::CreateReferralTokenAccountIdempotent { data, .. } => {
let row = create_referral_token_account_idempotent_row::CreateReferralTokenAccountIdempotentRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::FillOrder { data, .. } => {
let row = fill_order_row::FillOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::InitMarketLedgerIdempotent { data, .. } => {
let row =
init_market_ledger_idempotent_row::InitMarketLedgerIdempotentRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::OpenOrder { data, .. } => {
let row = open_order_row::OpenOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap { data, .. } => {
let row = swap_row::SwapRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap2 { data, .. } => {
let row = swap2_row::Swap2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap2WithDestination { data, .. } => {
let row = swap2_with_destination_row::Swap2WithDestinationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap2WithDestinationNative { data, .. } => {
let row =
swap2_with_destination_native_row::Swap2WithDestinationNativeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::SwapWithDestination { data, .. } => {
let row = swap_with_destination_row::SwapWithDestinationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::SwapWithDestinationNative { data, .. } => {
let row =
swap_with_destination_native_row::SwapWithDestinationNativeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::TransferFee { data, .. } => {
let row = transfer_fee_row::TransferFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::TransferSol { data, .. } => {
let row = transfer_sol_row::TransferSolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::TransferToSponsor { data, .. } => {
let row = transfer_to_sponsor_row::TransferToSponsorRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::UnwrapSol { data, .. } => {
let row = unwrap_sol_row::UnwrapSolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::WrapSol { data, .. } => {
let row = wrap_sol_row::WrapSolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::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 DflowAggregatorV4InstructionWithMetadata {
async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let DflowAggregatorV4InstructionWithMetadata(decoded_instruction, metadata, raw_accounts) =
self;
match decoded_instruction {
DflowAggregatorV4Instruction::CloseEmptyTokenAccount { data, .. } => {
let row = close_empty_token_account_row::CloseEmptyTokenAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::CloseOrder { data, .. } => {
let row = close_order_row::CloseOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::CreateReferralTokenAccountIdempotent { data, .. } => {
let row = create_referral_token_account_idempotent_row::CreateReferralTokenAccountIdempotentRow::from_parts(data.clone(), metadata.clone(), raw_accounts.clone());
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::FillOrder { data, .. } => {
let row = fill_order_row::FillOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::InitMarketLedgerIdempotent { data, .. } => {
let row =
init_market_ledger_idempotent_row::InitMarketLedgerIdempotentRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::OpenOrder { data, .. } => {
let row = open_order_row::OpenOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap { data, .. } => {
let row = swap_row::SwapRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap2 { data, .. } => {
let row = swap2_row::Swap2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap2WithDestination { data, .. } => {
let row = swap2_with_destination_row::Swap2WithDestinationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::Swap2WithDestinationNative { data, .. } => {
let row =
swap2_with_destination_native_row::Swap2WithDestinationNativeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::SwapWithDestination { data, .. } => {
let row = swap_with_destination_row::SwapWithDestinationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::SwapWithDestinationNative { data, .. } => {
let row =
swap_with_destination_native_row::SwapWithDestinationNativeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::TransferFee { data, .. } => {
let row = transfer_fee_row::TransferFeeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::TransferSol { data, .. } => {
let row = transfer_sol_row::TransferSolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::TransferToSponsor { data, .. } => {
let row = transfer_to_sponsor_row::TransferToSponsorRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::UnwrapSol { data, .. } => {
let row = unwrap_sol_row::UnwrapSolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::WrapSol { data, .. } => {
let row = wrap_sol_row::WrapSolRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
DflowAggregatorV4Instruction::CpiEvent { data, .. } => {
let row = cpi_event_row::CpiEventRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
}
}
}