/// Seed the mock database with finance data fn seed_finance_data(db: Arc) { // Create a user account let mut account = Account::new() .name("Demo Account") .user_id(1) .description("Demo trading account") .ledger("ethereum") .address("0x1234567890abcdef1234567890abcdef12345678") .pubkey("0xabcdef1234567890abcdef1234567890abcdef12"); // Store the account in the database let (account_id, updated_account) = db.collection::() .expect("Failed to get Account collection") .set(&account) .expect("Failed to store account"); // Create an ERC20 token asset let token_asset = Asset::new() .name("HERO Token") .description("Herocode governance token") .amount(1000.0) .address("0x9876543210abcdef9876543210abcdef98765432") .asset_type(AssetType::Erc20) .decimals(18); // Store the token asset in the database let (token_id, updated_token) = db.collection::() .expect("Failed to get Asset collection") .set(&token_asset) .expect("Failed to store token asset"); // Create an NFT asset let nft_asset = Asset::new() .name("Herocode #1") .description("Unique digital collectible") .amount(1.0) .address("0xabcdef1234567890abcdef1234567890abcdef12") .asset_type(AssetType::Erc721) .decimals(0); // Store the NFT asset in the database let (nft_id, updated_nft) = db.collection::() .expect("Failed to get Asset collection") .set(&nft_asset) .expect("Failed to store NFT asset"); // Add assets to the account account = updated_account.add_asset(token_id); account = account.add_asset(nft_id); // Update the account in the database let (_, updated_account) = db.collection::() .expect("Failed to get Account collection") .set(&account) .expect("Failed to store updated account"); // Create a listing for the NFT let listing = Listing::new() .seller_id(account_id) .asset_id(nft_id) .price(0.5) .currency("ETH") .listing_type(ListingType::Auction) .title(Some("Rare Herocode NFT".to_string())) .description(Some("One of a kind digital collectible".to_string())) .image_url(Some("https://example.com/nft/1.png".to_string())) .add_tag("rare".to_string()) .add_tag("collectible".to_string()); // Store the listing in the database let (listing_id, updated_listing) = db.collection::() .expect("Failed to get Listing collection") .set(&listing) .expect("Failed to store listing"); println!("Mock database seeded with finance data:"); println!(" - Added account: {} (ID: {})", updated_account.name, updated_account.base_data.id); println!(" - Added token asset: {} (ID: {})", updated_token.name, updated_token.base_data.id); println!(" - Added NFT asset: {} (ID: {})", updated_nft.name, updated_nft.base_data.id); println!(" - Added listing: {} (ID: {})", updated_listing.title.unwrap_or_default(), updated_listing.base_data.id); }