Browse Source

Maintenance: Drop Store.add and use rails way creation instead.

Rolf Schmidt 3 years ago
parent
commit
534efbb5fe

+ 1 - 1
app/controllers/attachments_controller.rb

@@ -32,7 +32,7 @@ class AttachmentsController < ApplicationController
       'Content-Type' => content_type
     }
 
-    store = Store.add(
+    store = Store.create!(
       object:      'UploadCache',
       o_id:        params[:form_id],
       data:        file.read,

+ 1 - 1
app/controllers/form_controller.rb

@@ -122,7 +122,7 @@ class FormController < ApplicationController
       )
 
       params[:file]&.each do |file|
-        Store.add(
+        Store.create!(
           object:      'Ticket::Article',
           o_id:        article.id,
           data:        file.read,

+ 1 - 1
app/models/application_model/has_attachments.rb

@@ -141,7 +141,7 @@ For use in #search_index_attribute_lookup
         data[:preferences] = attachment[:preferences]
       end
 
-      article_store.push Store.add(data)
+      article_store.push Store.create!(data)
     end
   end
 end

+ 2 - 2
app/models/avatar.rb

@@ -192,7 +192,7 @@ add avatar by url
     # store images
     object_name = "Avatar::#{data[:object]}"
     if data[:full].present?
-      store_full = Store.add(
+      store_full = Store.create!(
         object:        "#{object_name}::Full",
         o_id:          data[:o_id],
         data:          data[:full][:content],
@@ -206,7 +206,7 @@ add avatar by url
       record[:store_hash]    = Digest::MD5.hexdigest(data[:full][:content])
     end
     if data[:resize].present?
-      store_resize = Store.add(
+      store_resize = Store.create!(
         object:        "#{object_name}::Resize",
         o_id:          data[:o_id],
         data:          data[:resize][:content],

+ 1 - 1
app/models/channel/email_parser.rb

@@ -298,7 +298,7 @@ returns
           if !filename.force_encoding('UTF-8').valid_encoding?
             filename = filename.utf8_encode(fallback: :read_as_sanitized_binary)
           end
-          Store.add(
+          Store.create!(
             object:      'Ticket::Article',
             o_id:        article.id,
             data:        attachment[:data],

+ 2 - 2
app/models/concerns/can_clone_attachments.rb

@@ -64,7 +64,7 @@ returns
       end
       next if already_added == true
 
-      file = Store.add(
+      file = Store.create!(
         object:      object_type,
         o_id:        object_id,
         data:        new_attachment.content,
@@ -83,7 +83,7 @@ returns
     Store
       .list(object: source_object_name, o_id: form_id)
       .map do |old_attachment|
-        Store.add(
+        Store.create!(
           object:      self.class.name,
           o_id:        id,
           data:        old_attachment.content,

+ 1 - 1
app/models/concerns/has_rich_text.rb

@@ -80,7 +80,7 @@ Checks if file is used inline
     return if has_rich_text_attachments_cache.blank?
 
     has_rich_text_attachments_cache.each do |attachment_cache|
-      Store.add(
+      Store.create!(
         object:      self.class.name,
         o_id:        id,
         data:        attachment_cache[:data],

+ 1 - 1
app/models/knowledge_base/answer.rb

@@ -62,7 +62,7 @@ class KnowledgeBase::Answer < ApplicationModel
     filename     = file.try(:original_filename) || File.basename(file.path)
     content_type = file.try(:content_type) || MIME::Types.type_for(filename).first&.content_type || 'application/octet-stream'
 
-    Store.add(
+    Store.create!(
       object:      self.class.name,
       o_id:        id,
       data:        file.read,

+ 1 - 1
app/models/package.rb

@@ -267,7 +267,7 @@ subsequently in a separate step.
       # store package
       if !data[:reinstall]
         package_db = Package.create(meta)
-        Store.add(
+        Store.create!(
           object:        'Package',
           o_id:          package_db.id,
           data:          package.to_json,

+ 11 - 37
app/models/store.rb

@@ -12,49 +12,23 @@ class Store < ApplicationModel
 
   store :preferences
 
-  before_create :oversized_preferences_check
+  before_validation :set_object_id
+  before_create :set_store_file, :oversized_preferences_check
   after_create :generate_previews
   before_update :oversized_preferences_check
 
-=begin
-
-add an attachment to storage
-
-  result = Store.add(
-    object: 'Ticket::Article',
-    o_id: 4711,
-    data: binary_string,
-    filename: 'filename.txt',
-    preferences: {
-      content_type: 'image/png',
-      content_id: 234,
-    }
-  )
+  attr_accessor :object, :data
 
-returns
-
-  result = true
-
-=end
+  def set_object_id
+    return if object.blank?
 
-  def self.add(data)
-    data.deep_stringify_keys!
-
-    # lookup store_object.id
-    store_object = Store::Object.create_if_not_exists(name: data['object'])
-    data['store_object_id'] = store_object.id
-
-    # add to real store
-    file = Store::File.add(data['data'])
-
-    data['size'] = data['data'].to_s.bytesize
-    data['store_file_id'] = file.id
-
-    # not needed attributes
-    data.delete('data')
-    data.delete('object')
+    self.store_object_id = Store::Object.create_if_not_exists(name: object).id
+  end
 
-    Store.create!(data)
+  def set_store_file
+    file = Store::File.add(data)
+    self.size = data.to_s.bytesize
+    self.store_file_id = file.id
   end
 
 =begin

Some files were not shown because too many files changed in this diff