14484: Adds file count and size callback to the collection model
[arvados.git] / services / api / app / models / collection.rb
index 6147b79f9f5aa16c6b9e24ef5164bab43139373a..2cebd5438ed1fbfec710de6947cd9516d058a377 100644 (file)
@@ -30,6 +30,7 @@ class Collection < ArvadosModel
   validate :versioning_metadata_updates, on: :update
   validate :past_versions_cannot_be_updated, on: :update
   before_save :set_file_names
+  before_save :set_file_count_and_total_size
   around_update :manage_versioning
 
   api_accessible :user, extend: :common do |t|
@@ -51,6 +52,8 @@ class Collection < ArvadosModel
     t.add :version
     t.add :current_version_uuid
     t.add :preserve_version
+    t.add :file_count
+    t.add :file_size_total
   end
 
   after_initialize do
@@ -195,6 +198,15 @@ class Collection < ArvadosModel
     true
   end
 
+  def set_file_count_and_total_size
+    if self.manifest_text_changed?
+      m = Keep::Manifest.new(self.manifest_text)
+      self.file_size_total = m.files_size
+      self.file_count = m.files_count
+    end
+    true
+  end
+
   def manifest_files
     return '' if !self.manifest_text