Browse Source

added asset counter to videos

ignazio-bovo 3 years ago
parent
commit
8cd58c659d
1 changed files with 17 additions and 8 deletions
  1. 17 8
      runtime-modules/content/src/lib.rs

+ 17 - 8
runtime-modules/content/src/lib.rs

@@ -337,6 +337,8 @@ pub struct VideoRecord<ChannelId, SeriesId, DataObjectId: Ord> {
     pub is_censored: bool,
     /// storage parameters used during deletion
     pub maybe_data_objects_id_set: Option<BTreeSet<DataObjectId>>,
+    /// assets held by the video both URL and Storage assets
+    pub num_assets: u64,
 }
 
 type Video<T> = VideoRecord<
@@ -1041,6 +1043,10 @@ decl_module! {
                 in_series: None,
                 /// Whether the curators have censored the video or not.
                 is_censored: false,
+                /// num assets
+                num_assets: maybe_data_objects_ids
+                            .as_ref()
+                            .map_or(0u64, |assets| assets.len() as u64),
                 /// storage parameters for later storage deletion
                 maybe_data_objects_id_set: maybe_data_objects_ids,
             };
@@ -1177,14 +1183,12 @@ decl_module! {
             let deletion_prize_source_account_id = ChannelById::<T>::get(&channel_id)
                 .deletion_prize_source_account_id;
 
-            //
-            // == MUTATION SAFE ==
-            //
-
+            // remove storage object id from video list
             let mut video = video;
             let bag_id = Self::bag_id_for_channel(&channel_id);
             let objects_ids_to_remove = assets.iter()
                 .filter_map(|&maybe_asset| {
+                // if asset is Some(_) it indicates a storage asset, else URL asset
                     maybe_asset.and_then(|data_object_id| {
                         if let Some(mut video_assets) = video.maybe_data_objects_id_set.clone() {
 
@@ -1194,17 +1198,22 @@ decl_module! {
                          return Some(data_object_id);
                     })
                 })
-//                .map(|&x| x.clone())
                 .collect::<BTreeSet<_>>();
 
-            let _ = Storage::<T>::delete_data_objects (
+            Storage::<T>::delete_data_objects (
                  deletion_prize_source_account_id,
                  bag_id,
                  objects_ids_to_remove,
-            );
+            )?;
+
+            video.num_assets = video.num_assets.saturating_sub(assets.len() as u64);
+
+            //
+            // == MUTATION SAFE ==
+            //
 
             // Remove video
-            VideoById::<T>::remove(video_id);
+            VideoById::<T>::insert(video_id, video);
 
 //            Self::deposit_event(RawEvent::VideoAssetsDeleted(actor, video_id, assets));
         }