pub mod amount_to_ui_amount_row;
pub mod approve_checked_row;
pub mod approve_row;
pub mod batch_row;
pub mod burn_checked_row;
pub mod burn_row;
pub mod close_account_row;
pub mod freeze_account_row;
pub mod get_account_data_size_row;
pub mod initialize_account2_row;
pub mod initialize_account3_row;
pub mod initialize_account_row;
pub mod initialize_immutable_owner_row;
pub mod initialize_mint2_row;
pub mod initialize_mint_row;
pub mod initialize_multisig2_row;
pub mod initialize_multisig_row;
pub mod mint_to_checked_row;
pub mod mint_to_row;
pub mod revoke_row;
pub mod set_authority_row;
pub mod sync_native_row;
pub mod thaw_account_row;
pub mod transfer_checked_row;
pub mod transfer_row;
pub mod ui_amount_to_amount_row;
pub mod unwrap_lamports_row;
pub mod withdraw_excess_lamports_row;
pub use self::{
amount_to_ui_amount_row::*, approve_checked_row::*, approve_row::*, batch_row::*,
burn_checked_row::*, burn_row::*, close_account_row::*, freeze_account_row::*,
get_account_data_size_row::*, initialize_account2_row::*, initialize_account3_row::*,
initialize_account_row::*, initialize_immutable_owner_row::*, initialize_mint2_row::*,
initialize_mint_row::*, initialize_multisig2_row::*, initialize_multisig_row::*,
mint_to_checked_row::*, mint_to_row::*, revoke_row::*, set_authority_row::*,
sync_native_row::*, thaw_account_row::*, transfer_checked_row::*, transfer_row::*,
ui_amount_to_amount_row::*, unwrap_lamports_row::*, withdraw_excess_lamports_row::*,
};
use super::TokenProgramInstruction;
pub struct TokenProgramInstructionsMigration;
impl sqlx_migrator::Migration<sqlx::Postgres> for TokenProgramInstructionsMigration {
fn app(&self) -> &str {
"token-program"
}
fn name(&self) -> &str {
"token_program_instructions"
}
fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
vec![
Box::new(AmountToUiAmountMigrationOperation),
Box::new(ApproveMigrationOperation),
Box::new(ApproveCheckedMigrationOperation),
Box::new(BatchMigrationOperation),
Box::new(BurnMigrationOperation),
Box::new(BurnCheckedMigrationOperation),
Box::new(CloseAccountMigrationOperation),
Box::new(FreezeAccountMigrationOperation),
Box::new(GetAccountDataSizeMigrationOperation),
Box::new(InitializeAccountMigrationOperation),
Box::new(InitializeAccount2MigrationOperation),
Box::new(InitializeAccount3MigrationOperation),
Box::new(InitializeImmutableOwnerMigrationOperation),
Box::new(InitializeMintMigrationOperation),
Box::new(InitializeMint2MigrationOperation),
Box::new(InitializeMultisigMigrationOperation),
Box::new(InitializeMultisig2MigrationOperation),
Box::new(MintToMigrationOperation),
Box::new(MintToCheckedMigrationOperation),
Box::new(RevokeMigrationOperation),
Box::new(SetAuthorityMigrationOperation),
Box::new(SyncNativeMigrationOperation),
Box::new(ThawAccountMigrationOperation),
Box::new(TransferMigrationOperation),
Box::new(TransferCheckedMigrationOperation),
Box::new(UiAmountToAmountMigrationOperation),
Box::new(UnwrapLamportsMigrationOperation),
Box::new(WithdrawExcessLamportsMigrationOperation),
]
}
fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
vec![]
}
}
pub struct TokenProgramInstructionWithMetadata(
pub TokenProgramInstruction,
pub carbon_core::instruction::InstructionMetadata,
pub Vec<solana_instruction::AccountMeta>,
);
impl
From<(
TokenProgramInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
)> for TokenProgramInstructionWithMetadata
{
fn from(
value: (
TokenProgramInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
),
) -> Self {
TokenProgramInstructionWithMetadata(value.0, value.1, value.2)
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for TokenProgramInstructionWithMetadata {
async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let TokenProgramInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
TokenProgramInstruction::InitializeMint { data, .. } => {
let row = initialize_mint_row::InitializeMintRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeAccount { data, .. } => {
let row = initialize_account_row::InitializeAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeMultisig { data, .. } => {
let row = initialize_multisig_row::InitializeMultisigRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::Transfer { data, .. } => {
let row = transfer_row::TransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::Approve { data, .. } => {
let row = approve_row::ApproveRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::Revoke { data, .. } => {
let row = revoke_row::RevokeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::SetAuthority { data, .. } => {
let row = set_authority_row::SetAuthorityRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::MintTo { data, .. } => {
let row = mint_to_row::MintToRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::Burn { data, .. } => {
let row = burn_row::BurnRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::CloseAccount { data, .. } => {
let row = close_account_row::CloseAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::FreezeAccount { data, .. } => {
let row = freeze_account_row::FreezeAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::ThawAccount { data, .. } => {
let row = thaw_account_row::ThawAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::TransferChecked { data, .. } => {
let row = transfer_checked_row::TransferCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::ApproveChecked { data, .. } => {
let row = approve_checked_row::ApproveCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::MintToChecked { data, .. } => {
let row = mint_to_checked_row::MintToCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::BurnChecked { data, .. } => {
let row = burn_checked_row::BurnCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeAccount2 { data, .. } => {
let row = initialize_account2_row::InitializeAccount2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::SyncNative { data, .. } => {
let row = sync_native_row::SyncNativeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeAccount3 { data, .. } => {
let row = initialize_account3_row::InitializeAccount3Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeMultisig2 { data, .. } => {
let row = initialize_multisig2_row::InitializeMultisig2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeMint2 { data, .. } => {
let row = initialize_mint2_row::InitializeMint2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::GetAccountDataSize { data, .. } => {
let row = get_account_data_size_row::GetAccountDataSizeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeImmutableOwner { data, .. } => {
let row = initialize_immutable_owner_row::InitializeImmutableOwnerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::AmountToUiAmount { data, .. } => {
let row = amount_to_ui_amount_row::AmountToUiAmountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::UiAmountToAmount { data, .. } => {
let row = ui_amount_to_amount_row::UiAmountToAmountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::WithdrawExcessLamports { data, .. } => {
let row = withdraw_excess_lamports_row::WithdrawExcessLamportsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::UnwrapLamports { data, .. } => {
let row = unwrap_lamports_row::UnwrapLamportsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
TokenProgramInstruction::Batch { data, .. } => {
let row = batch_row::BatchRow::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 TokenProgramInstructionWithMetadata {
async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let TokenProgramInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
TokenProgramInstruction::InitializeMint { data, .. } => {
let row = initialize_mint_row::InitializeMintRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeAccount { data, .. } => {
let row = initialize_account_row::InitializeAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeMultisig { data, .. } => {
let row = initialize_multisig_row::InitializeMultisigRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::Transfer { data, .. } => {
let row = transfer_row::TransferRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::Approve { data, .. } => {
let row = approve_row::ApproveRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::Revoke { data, .. } => {
let row = revoke_row::RevokeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::SetAuthority { data, .. } => {
let row = set_authority_row::SetAuthorityRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::MintTo { data, .. } => {
let row = mint_to_row::MintToRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::Burn { data, .. } => {
let row = burn_row::BurnRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::CloseAccount { data, .. } => {
let row = close_account_row::CloseAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::FreezeAccount { data, .. } => {
let row = freeze_account_row::FreezeAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::ThawAccount { data, .. } => {
let row = thaw_account_row::ThawAccountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::TransferChecked { data, .. } => {
let row = transfer_checked_row::TransferCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::ApproveChecked { data, .. } => {
let row = approve_checked_row::ApproveCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::MintToChecked { data, .. } => {
let row = mint_to_checked_row::MintToCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::BurnChecked { data, .. } => {
let row = burn_checked_row::BurnCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeAccount2 { data, .. } => {
let row = initialize_account2_row::InitializeAccount2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::SyncNative { data, .. } => {
let row = sync_native_row::SyncNativeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeAccount3 { data, .. } => {
let row = initialize_account3_row::InitializeAccount3Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeMultisig2 { data, .. } => {
let row = initialize_multisig2_row::InitializeMultisig2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeMint2 { data, .. } => {
let row = initialize_mint2_row::InitializeMint2Row::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::GetAccountDataSize { data, .. } => {
let row = get_account_data_size_row::GetAccountDataSizeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::InitializeImmutableOwner { data, .. } => {
let row = initialize_immutable_owner_row::InitializeImmutableOwnerRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::AmountToUiAmount { data, .. } => {
let row = amount_to_ui_amount_row::AmountToUiAmountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::UiAmountToAmount { data, .. } => {
let row = ui_amount_to_amount_row::UiAmountToAmountRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::WithdrawExcessLamports { data, .. } => {
let row = withdraw_excess_lamports_row::WithdrawExcessLamportsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::UnwrapLamports { data, .. } => {
let row = unwrap_lamports_row::UnwrapLamportsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
TokenProgramInstruction::Batch { data, .. } => {
let row = batch_row::BatchRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
}
}
}