Sha256: 17334eec4464a4d1e76671af19611fe2dfd80bd6d74804999822d3bb3506c3df

Contents?: true

Size: 1.25 KB

Versions: 134

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require "renalware/feeds"

module Renalware
  module Feeds
    module Files
      class CreateFeedFile
        include Virtus.model
        attribute :uploaded_file, Pathname
        attribute :file_type, Renalware::Feeds::FileType
        attribute :user, Renalware::User

        def self.call(*args)
          new(*args).call
        end

        def call
          copy_uploaded_file_to_uploads_dir
          create_feed_file
        end

        private

        def copy_uploaded_file_to_uploads_dir
          FileUtils.cp(uploaded_file, new_filepath)
        end

        def new_filepath
          @new_filename ||= begin
            name = "#{SecureRandom.uuid}_#{uploaded_file.basename}".truncate(254)
            ::File.join(uploads_dir, name)
          end
        end

        def uploads_dir
          Rails.root.join("tmp", "uploads").tap do |uploads_path|
            warn "using upload path #{uploads_path}"
            Dir.mkdir(uploads_path) unless Dir.exist?(uploads_path)
          end
        end

        def create_feed_file
          Renalware::Feeds::File.build(
            location: new_filepath,
            file_type: file_type,
            user: user
          ).tap(&:save!)
        end
      end
    end
  end
end

Version data entries

134 entries across 134 versions & 1 rubygems

Version Path
renalware-core-2.0.153 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.152 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.151 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.149 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.148 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.147 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.146 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.145 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.144 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.143 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.142 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.141 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.140 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.139 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.138 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.137 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.136 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.135 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.134 app/models/renalware/feeds/files/create_feed_file.rb
renalware-core-2.0.133 app/models/renalware/feeds/files/create_feed_file.rb