carbon-mpl-token-metadata-decoder 1.0.0

MPL Token Metadata Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
pub mod collection_authority_record_row;
pub mod edition_marker_row;
pub mod edition_marker_v2_row;
pub mod edition_row;
pub mod holder_delegate_record_row;
pub mod master_edition_v1_row;
pub mod master_edition_v2_row;
pub mod metadata_delegate_record_row;
pub mod metadata_row;
pub mod reservation_list_v1_row;
pub mod reservation_list_v2_row;
pub mod token_owned_escrow_row;
pub mod token_record_row;
pub mod use_authority_record_row;

pub use self::{
    collection_authority_record_row::*, edition_marker_row::*, edition_marker_v2_row::*,
    edition_row::*, holder_delegate_record_row::*, master_edition_v1_row::*,
    master_edition_v2_row::*, metadata_delegate_record_row::*, metadata_row::*,
    reservation_list_v1_row::*, reservation_list_v2_row::*, token_owned_escrow_row::*,
    token_record_row::*, use_authority_record_row::*,
};
use super::MplTokenMetadataAccount;

pub struct MplTokenMetadataAccountsMigration;

impl sqlx_migrator::Migration<sqlx::Postgres> for MplTokenMetadataAccountsMigration {
    fn app(&self) -> &str {
        "mpl-token-metadata"
    }

    fn name(&self) -> &str {
        "mpl_token_metadata_accounts"
    }

    fn operations(&self) -> Vec<Box<dyn sqlx_migrator::Operation<sqlx::Postgres>>> {
        vec![
            Box::new(CollectionAuthorityRecordMigrationOperation),
            Box::new(EditionMigrationOperation),
            Box::new(EditionMarkerMigrationOperation),
            Box::new(EditionMarkerV2MigrationOperation),
            Box::new(HolderDelegateRecordMigrationOperation),
            Box::new(MasterEditionV1MigrationOperation),
            Box::new(MasterEditionV2MigrationOperation),
            Box::new(MetadataMigrationOperation),
            Box::new(MetadataDelegateRecordMigrationOperation),
            Box::new(ReservationListV1MigrationOperation),
            Box::new(ReservationListV2MigrationOperation),
            Box::new(TokenOwnedEscrowMigrationOperation),
            Box::new(TokenRecordMigrationOperation),
            Box::new(UseAuthorityRecordMigrationOperation),
        ]
    }

    fn parents(&self) -> Vec<Box<dyn sqlx_migrator::Migration<sqlx::Postgres>>> {
        vec![]
    }
}

pub struct MplTokenMetadataAccountWithMetadata(
    pub MplTokenMetadataAccount,
    pub carbon_core::account::AccountMetadata,
);

impl
    From<(
        MplTokenMetadataAccount,
        carbon_core::account::AccountMetadata,
    )> for MplTokenMetadataAccountWithMetadata
{
    fn from(
        value: (
            MplTokenMetadataAccount,
            carbon_core::account::AccountMetadata,
        ),
    ) -> Self {
        MplTokenMetadataAccountWithMetadata(value.0, value.1)
    }
}

#[async_trait::async_trait]
impl carbon_core::postgres::operations::Insert for MplTokenMetadataAccountWithMetadata {
    async fn insert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
        let MplTokenMetadataAccountWithMetadata(account, metadata) = self;

        match account {
            MplTokenMetadataAccount::CollectionAuthorityRecord(account) => {
                let row = collection_authority_record_row::CollectionAuthorityRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::MetadataDelegateRecord(account) => {
                let row = metadata_delegate_record_row::MetadataDelegateRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::HolderDelegateRecord(account) => {
                let row = holder_delegate_record_row::HolderDelegateRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::Edition(account) => {
                let row = edition_row::EditionRow::from_parts(*account.clone(), metadata.clone());
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::EditionMarker(account) => {
                let row = edition_marker_row::EditionMarkerRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::EditionMarkerV2(account) => {
                let row = edition_marker_v2_row::EditionMarkerV2Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::TokenOwnedEscrow(account) => {
                let row = token_owned_escrow_row::TokenOwnedEscrowRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::MasterEditionV2(account) => {
                let row = master_edition_v2_row::MasterEditionV2Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::MasterEditionV1(account) => {
                let row = master_edition_v1_row::MasterEditionV1Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::Metadata(account) => {
                let row = metadata_row::MetadataRow::from_parts(*account.clone(), metadata.clone());
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::TokenRecord(account) => {
                let row = token_record_row::TokenRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::ReservationListV2(account) => {
                let row = reservation_list_v2_row::ReservationListV2Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::ReservationListV1(account) => {
                let row = reservation_list_v1_row::ReservationListV1Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::UseAuthorityRecord(account) => {
                let row = use_authority_record_row::UseAuthorityRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.insert(pool).await?;
                Ok(())
            }
        }
    }
}

#[async_trait::async_trait]
impl carbon_core::postgres::operations::Upsert for MplTokenMetadataAccountWithMetadata {
    async fn upsert(&self, pool: &sqlx::PgPool) -> carbon_core::error::CarbonResult<()> {
        let MplTokenMetadataAccountWithMetadata(account, metadata) = self;
        match account {
            MplTokenMetadataAccount::CollectionAuthorityRecord(account) => {
                let row = collection_authority_record_row::CollectionAuthorityRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::MetadataDelegateRecord(account) => {
                let row = metadata_delegate_record_row::MetadataDelegateRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::HolderDelegateRecord(account) => {
                let row = holder_delegate_record_row::HolderDelegateRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::Edition(account) => {
                let row = edition_row::EditionRow::from_parts(*account.clone(), metadata.clone());
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::EditionMarker(account) => {
                let row = edition_marker_row::EditionMarkerRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::EditionMarkerV2(account) => {
                let row = edition_marker_v2_row::EditionMarkerV2Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::TokenOwnedEscrow(account) => {
                let row = token_owned_escrow_row::TokenOwnedEscrowRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::MasterEditionV2(account) => {
                let row = master_edition_v2_row::MasterEditionV2Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::MasterEditionV1(account) => {
                let row = master_edition_v1_row::MasterEditionV1Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::Metadata(account) => {
                let row = metadata_row::MetadataRow::from_parts(*account.clone(), metadata.clone());
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::TokenRecord(account) => {
                let row = token_record_row::TokenRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::ReservationListV2(account) => {
                let row = reservation_list_v2_row::ReservationListV2Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::ReservationListV1(account) => {
                let row = reservation_list_v1_row::ReservationListV1Row::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
            MplTokenMetadataAccount::UseAuthorityRecord(account) => {
                let row = use_authority_record_row::UseAuthorityRecordRow::from_parts(
                    *account.clone(),
                    metadata.clone(),
                );
                row.upsert(pool).await?;
                Ok(())
            }
        }
    }
}