use super::*; use alloc::string::String; use frame_support::{traits::Get, weights::Weight}; pub fn migrate_subnet_volume() -> Weight { let migration_name = b"migrate_subnet_volume".to_vec(); // Initialize the weight with one read operation. let mut weight = T::DbWeight::get().reads(1); // Check if the migration has already run if HasMigrationRun::::get(&migration_name) { log::info!( "Migration '{:?}' has already run. Skipping.", String::from_utf8_lossy(&migration_name) ); return weight; } log::info!( "Running migration '{}'", String::from_utf8_lossy(&migration_name) ); let mut migrated = 0u64; SubnetVolume::::translate::(|_key, old_value| { migrated = migrated.saturating_add(1); Some(old_value as u128) // Convert and store as u128 }); log::info!("Migrated {migrated} entries in SubnetVolume"); weight = weight.saturating_add(T::DbWeight::get().reads_writes(migrated, migrated)); // Mark the migration as completed HasMigrationRun::::insert(&migration_name, true); weight = weight.saturating_add(T::DbWeight::get().writes(1)); weight }