pub mod authorize_checked_row;
pub mod authorize_checked_with_seed_row;
pub mod authorize_row;
pub mod authorize_with_seed_row;
pub mod deactivate_delinquent_row;
pub mod deactivate_row;
pub mod delegate_stake_row;
pub mod get_minimum_delegation_row;
pub mod initialize_checked_row;
pub mod initialize_row;
pub mod merge_row;
pub mod move_lamports_row;
pub mod move_stake_row;
pub mod redelegate_row;
pub mod set_lockup_checked_row;
pub mod set_lockup_row;
pub mod split_row;
pub mod withdraw_row;
pub use self::{
authorize_checked_row::*, authorize_checked_with_seed_row::*, authorize_row::*,
authorize_with_seed_row::*, deactivate_delinquent_row::*, deactivate_row::*,
delegate_stake_row::*, get_minimum_delegation_row::*, initialize_checked_row::*,
initialize_row::*, merge_row::*, move_lamports_row::*, move_stake_row::*, redelegate_row::*,
set_lockup_checked_row::*, set_lockup_row::*, split_row::*, withdraw_row::*,
};
use super::StakeProgramInstruction;
pub struct StakeProgramInstructionsMigration;
impl sqlx_migrator::Migration<sqlx::Postgres> for StakeProgramInstructionsMigration {
fn app(&self) -> &str {
"stake-program"
}
fn name(&self) -> &str {
"stake_program_instructions"
}
fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
vec![
Box::new(AuthorizeMigrationOperation),
Box::new(AuthorizeCheckedMigrationOperation),
Box::new(AuthorizeCheckedWithSeedMigrationOperation),
Box::new(AuthorizeWithSeedMigrationOperation),
Box::new(DeactivateMigrationOperation),
Box::new(DeactivateDelinquentMigrationOperation),
Box::new(DelegateStakeMigrationOperation),
Box::new(GetMinimumDelegationMigrationOperation),
Box::new(InitializeMigrationOperation),
Box::new(InitializeCheckedMigrationOperation),
Box::new(MergeMigrationOperation),
Box::new(MoveLamportsMigrationOperation),
Box::new(MoveStakeMigrationOperation),
Box::new(RedelegateMigrationOperation),
Box::new(SetLockupMigrationOperation),
Box::new(SetLockupCheckedMigrationOperation),
Box::new(SplitMigrationOperation),
Box::new(WithdrawMigrationOperation),
]
}
fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
vec![]
}
}
pub struct StakeProgramInstructionWithMetadata(
pub StakeProgramInstruction,
pub carbon_core::instruction::InstructionMetadata,
pub Vec<solana_instruction::AccountMeta>,
);
impl
From<(
StakeProgramInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
)> for StakeProgramInstructionWithMetadata
{
fn from(
value: (
StakeProgramInstruction,
carbon_core::instruction::InstructionMetadata,
Vec<solana_instruction::AccountMeta>,
),
) -> Self {
StakeProgramInstructionWithMetadata(value.0, value.1, value.2)
}
}
#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for StakeProgramInstructionWithMetadata {
async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let StakeProgramInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
StakeProgramInstruction::Initialize { data, .. } => {
let row = initialize_row::InitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::Authorize { data, .. } => {
let row = authorize_row::AuthorizeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::DelegateStake { data, .. } => {
let row = delegate_stake_row::DelegateStakeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::Split { data, .. } => {
let row = split_row::SplitRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::Withdraw { data, .. } => {
let row = withdraw_row::WithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::Deactivate { data, .. } => {
let row = deactivate_row::DeactivateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::SetLockup { data, .. } => {
let row = set_lockup_row::SetLockupRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::Merge { data, .. } => {
let row = merge_row::MergeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::AuthorizeWithSeed { data, .. } => {
let row = authorize_with_seed_row::AuthorizeWithSeedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::InitializeChecked { data, .. } => {
let row = initialize_checked_row::InitializeCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::AuthorizeChecked { data, .. } => {
let row = authorize_checked_row::AuthorizeCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::AuthorizeCheckedWithSeed { data, .. } => {
let row = authorize_checked_with_seed_row::AuthorizeCheckedWithSeedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::SetLockupChecked { data, .. } => {
let row = set_lockup_checked_row::SetLockupCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::GetMinimumDelegation { data, .. } => {
let row = get_minimum_delegation_row::GetMinimumDelegationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::DeactivateDelinquent { data, .. } => {
let row = deactivate_delinquent_row::DeactivateDelinquentRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::Redelegate { data, .. } => {
let row = redelegate_row::RedelegateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::MoveStake { data, .. } => {
let row = move_stake_row::MoveStakeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.insert(pool).await?;
Ok(())
}
StakeProgramInstruction::MoveLamports { data, .. } => {
let row = move_lamports_row::MoveLamportsRow::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 StakeProgramInstructionWithMetadata {
async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
let StakeProgramInstructionWithMetadata(decoded_instruction, metadata, raw_accounts) = self;
match decoded_instruction {
StakeProgramInstruction::Initialize { data, .. } => {
let row = initialize_row::InitializeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::Authorize { data, .. } => {
let row = authorize_row::AuthorizeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::DelegateStake { data, .. } => {
let row = delegate_stake_row::DelegateStakeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::Split { data, .. } => {
let row = split_row::SplitRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::Withdraw { data, .. } => {
let row = withdraw_row::WithdrawRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::Deactivate { data, .. } => {
let row = deactivate_row::DeactivateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::SetLockup { data, .. } => {
let row = set_lockup_row::SetLockupRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::Merge { data, .. } => {
let row = merge_row::MergeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::AuthorizeWithSeed { data, .. } => {
let row = authorize_with_seed_row::AuthorizeWithSeedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::InitializeChecked { data, .. } => {
let row = initialize_checked_row::InitializeCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::AuthorizeChecked { data, .. } => {
let row = authorize_checked_row::AuthorizeCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::AuthorizeCheckedWithSeed { data, .. } => {
let row = authorize_checked_with_seed_row::AuthorizeCheckedWithSeedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::SetLockupChecked { data, .. } => {
let row = set_lockup_checked_row::SetLockupCheckedRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::GetMinimumDelegation { data, .. } => {
let row = get_minimum_delegation_row::GetMinimumDelegationRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::DeactivateDelinquent { data, .. } => {
let row = deactivate_delinquent_row::DeactivateDelinquentRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::Redelegate { data, .. } => {
let row = redelegate_row::RedelegateRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::MoveStake { data, .. } => {
let row = move_stake_row::MoveStakeRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
StakeProgramInstruction::MoveLamports { data, .. } => {
let row = move_lamports_row::MoveLamportsRow::from_parts(
data.clone(),
metadata.clone(),
raw_accounts.clone(),
);
row.upsert(pool).await?;
Ok(())
}
}
}
}