pub mod cancel_all_and_place_orders_row;
pub mod cancel_all_orders_row;
pub mod cancel_order_by_client_order_id_row;
pub mod cancel_order_row;
pub mod close_market_row;
pub mod close_open_orders_account_row;
pub mod close_open_orders_indexer_row;
pub mod consume_events_row;
pub mod consume_given_events_row;
pub mod cpi_event_row;
pub mod create_market_row;
pub mod create_open_orders_account_row;
pub mod create_open_orders_indexer_row;
pub mod deposit_row;
pub mod edit_order_pegged_row;
pub mod edit_order_row;
pub mod place_order_pegged_row;
pub mod place_order_row;
pub mod place_orders_row;
pub mod place_take_order_row;
pub mod prune_orders_row;
pub mod refill_row;
pub mod set_delegate_row;
pub mod set_market_expired_row;
pub mod settle_funds_expired_row;
pub mod settle_funds_row;
pub mod stub_oracle_close_row;
pub mod stub_oracle_create_row;
pub mod stub_oracle_set_row;
pub mod sweep_fees_row;
pub use self::{
cancel_all_and_place_orders_row::*, cancel_all_orders_row::*,
cancel_order_by_client_order_id_row::*, cancel_order_row::*, close_market_row::*,
close_open_orders_account_row::*, close_open_orders_indexer_row::*, consume_events_row::*,
consume_given_events_row::*, cpi_event_row::*, create_market_row::*,
create_open_orders_account_row::*, create_open_orders_indexer_row::*, deposit_row::*,
edit_order_pegged_row::*, edit_order_row::*, place_order_pegged_row::*, place_order_row::*,
place_orders_row::*, place_take_order_row::*, prune_orders_row::*, refill_row::*,
set_delegate_row::*, set_market_expired_row::*, settle_funds_expired_row::*,
settle_funds_row::*, stub_oracle_close_row::*, stub_oracle_create_row::*,
stub_oracle_set_row::*, sweep_fees_row::*,
};
use super::OpenbookV2Instruction;
pub struct OpenbookV2InstructionsMigration;
impl sqlx_migrator::Migration<sqlx::Postgres> for OpenbookV2InstructionsMigration {
fn app(&self) -> &str {
"openbook-v2"
}
fn name(&self) -> &str {
"openbook_v2_instructions"
}
fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
vec![
Box::new(CancelAllAndPlaceOrdersMigrationOperation),
Box::new(CancelAllOrdersMigrationOperation),
Box::new(CancelOrderMigrationOperation),
Box::new(CancelOrderByClientOrderIdMigrationOperation),
Box::new(CloseMarketMigrationOperation),
Box::new(CloseOpenOrdersAccountMigrationOperation),
Box::new(CloseOpenOrdersIndexerMigrationOperation),
Box::new(ConsumeEventsMigrationOperation),
Box::new(ConsumeGivenEventsMigrationOperation),
Box::new(CreateMarketMigrationOperation),
Box::new(CreateOpenOrdersAccountMigrationOperation),
Box::new(CreateOpenOrdersIndexerMigrationOperation),
Box::new(DepositMigrationOperation),
Box::new(EditOrderMigrationOperation),
Box::new(EditOrderPeggedMigrationOperation),
Box::new(PlaceOrderMigrationOperation),
Box::new(PlaceOrderPeggedMigrationOperation),
Box::new(PlaceOrdersMigrationOperation),
Box::new(PlaceTakeOrderMigrationOperation),
Box::new(PruneOrdersMigrationOperation),
Box::new(RefillMigrationOperation),
Box::new(SetDelegateMigrationOperation),
Box::new(SetMarketExpiredMigrationOperation),
Box::new(SettleFundsMigrationOperation),
Box::new(SettleFundsExpiredMigrationOperation),
Box::new(StubOracleCloseMigrationOperation),
Box::new(StubOracleCreateMigrationOperation),
Box::new(StubOracleSetMigrationOperation),
Box::new(SweepFeesMigrationOperation),
Box::new(CpiEventMigrationOperation),
]
}
fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
vec![]
}
}
pub struct OpenbookV2InstructionWithMetadata(
pub OpenbookV2Instruction,
pub carbon_core::instruction::InstructionMetadata,
pub Vec<solana_instruction::AccountMeta>,
);
impl
From<(
OpenbookV2Instruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
)> for OpenbookV2InstructionWithMetadata
{
fn from(
value: (
OpenbookV2Instruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
),
) -> Self {
OpenbookV2InstructionWithMetadata(value.0, value.1, value.2)
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for OpenbookV2InstructionWithMetadata {
async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let OpenbookV2InstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
OpenbookV2Instruction::CreateMarket { data, .. } => {
let row = create_market_row::CreateMarketRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CloseMarket { data, .. } => {
let row = close_market_row::CloseMarketRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CreateOpenOrdersIndexer { data, .. } => {
let row = create_open_orders_indexer_row::CreateOpenOrdersIndexerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CloseOpenOrdersIndexer { data, .. } => {
let row = close_open_orders_indexer_row::CloseOpenOrdersIndexerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CreateOpenOrdersAccount { data, .. } => {
let row = create_open_orders_account_row::CreateOpenOrdersAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CloseOpenOrdersAccount { data, .. } => {
let row = close_open_orders_account_row::CloseOpenOrdersAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceOrder { data, .. } => {
let row = place_order_row::PlaceOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::EditOrder { data, .. } => {
let row = edit_order_row::EditOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::EditOrderPegged { data, .. } => {
let row = edit_order_pegged_row::EditOrderPeggedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceOrders { data, .. } => {
let row = place_orders_row::PlaceOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelAllAndPlaceOrders { data, .. } => {
let row = cancel_all_and_place_orders_row::CancelAllAndPlaceOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceOrderPegged { data, .. } => {
let row = place_order_pegged_row::PlaceOrderPeggedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceTakeOrder { data, .. } => {
let row = place_take_order_row::PlaceTakeOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::ConsumeEvents { data, .. } => {
let row = consume_events_row::ConsumeEventsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::ConsumeGivenEvents { data, .. } => {
let row = consume_given_events_row::ConsumeGivenEventsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelOrder { data, .. } => {
let row = cancel_order_row::CancelOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelOrderByClientOrderId { data, .. } => {
let row =
cancel_order_by_client_order_id_row::CancelOrderByClientOrderIdRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelAllOrders { data, .. } => {
let row = cancel_all_orders_row::CancelAllOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::Deposit { data, .. } => {
let row = deposit_row::DepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::Refill { data, .. } => {
let row = refill_row::RefillRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SettleFunds { data, .. } => {
let row = settle_funds_row::SettleFundsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SettleFundsExpired { data, .. } => {
let row = settle_funds_expired_row::SettleFundsExpiredRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SweepFees { data, .. } => {
let row = sweep_fees_row::SweepFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SetDelegate { data, .. } => {
let row = set_delegate_row::SetDelegateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SetMarketExpired { data, .. } => {
let row = set_market_expired_row::SetMarketExpiredRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PruneOrders { data, .. } => {
let row = prune_orders_row::PruneOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::StubOracleCreate { data, .. } => {
let row = stub_oracle_create_row::StubOracleCreateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::StubOracleClose { data, .. } => {
let row = stub_oracle_close_row::StubOracleCloseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::StubOracleSet { data, .. } => {
let row = stub_oracle_set_row::StubOracleSetRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
OpenbookV2Instruction::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 OpenbookV2InstructionWithMetadata {
async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let OpenbookV2InstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
OpenbookV2Instruction::CreateMarket { data, .. } => {
let row = create_market_row::CreateMarketRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CloseMarket { data, .. } => {
let row = close_market_row::CloseMarketRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CreateOpenOrdersIndexer { data, .. } => {
let row = create_open_orders_indexer_row::CreateOpenOrdersIndexerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CloseOpenOrdersIndexer { data, .. } => {
let row = close_open_orders_indexer_row::CloseOpenOrdersIndexerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CreateOpenOrdersAccount { data, .. } => {
let row = create_open_orders_account_row::CreateOpenOrdersAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CloseOpenOrdersAccount { data, .. } => {
let row = close_open_orders_account_row::CloseOpenOrdersAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceOrder { data, .. } => {
let row = place_order_row::PlaceOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::EditOrder { data, .. } => {
let row = edit_order_row::EditOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::EditOrderPegged { data, .. } => {
let row = edit_order_pegged_row::EditOrderPeggedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceOrders { data, .. } => {
let row = place_orders_row::PlaceOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelAllAndPlaceOrders { data, .. } => {
let row = cancel_all_and_place_orders_row::CancelAllAndPlaceOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceOrderPegged { data, .. } => {
let row = place_order_pegged_row::PlaceOrderPeggedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PlaceTakeOrder { data, .. } => {
let row = place_take_order_row::PlaceTakeOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::ConsumeEvents { data, .. } => {
let row = consume_events_row::ConsumeEventsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::ConsumeGivenEvents { data, .. } => {
let row = consume_given_events_row::ConsumeGivenEventsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelOrder { data, .. } => {
let row = cancel_order_row::CancelOrderRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelOrderByClientOrderId { data, .. } => {
let row =
cancel_order_by_client_order_id_row::CancelOrderByClientOrderIdRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CancelAllOrders { data, .. } => {
let row = cancel_all_orders_row::CancelAllOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::Deposit { data, .. } => {
let row = deposit_row::DepositRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::Refill { data, .. } => {
let row = refill_row::RefillRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SettleFunds { data, .. } => {
let row = settle_funds_row::SettleFundsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SettleFundsExpired { data, .. } => {
let row = settle_funds_expired_row::SettleFundsExpiredRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SweepFees { data, .. } => {
let row = sweep_fees_row::SweepFeesRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SetDelegate { data, .. } => {
let row = set_delegate_row::SetDelegateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::SetMarketExpired { data, .. } => {
let row = set_market_expired_row::SetMarketExpiredRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::PruneOrders { data, .. } => {
let row = prune_orders_row::PruneOrdersRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::StubOracleCreate { data, .. } => {
let row = stub_oracle_create_row::StubOracleCreateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::StubOracleClose { data, .. } => {
let row = stub_oracle_close_row::StubOracleCloseRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::StubOracleSet { data, .. } => {
let row = stub_oracle_set_row::StubOracleSetRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
OpenbookV2Instruction::CpiEvent { data, .. } => {
let row = cpi_event_row::CpiEventRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
}
}
}