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(())
}
}
}
}