Sha256: 9e99569d15d1f6b0dccf95ebf01a0a73fbe2d541c10df777074bb7780dcb2d74

Contents?: true

Size: 812 Bytes

Versions: 1

Compression:

Stored size: 812 Bytes

Contents

module Boxroom::Search
  class FilesAndFolders < ::Trailblazer::Operation
    step Trailblazer::Operation::Contract::Build(constant: Boxroom::Search::Contract::FilesAndFolders)
    step Trailblazer::Operation::Contract::Validate()
    step :search_tree

    def search_tree(options, params:, **)
      options['files'], options['folders'] = [], []
      folder = Boxroom::Folder.find(params[:folder_id])
      search_folder(params[:term], folder, options)
    end

    def search_folder(term, folder, options)
      options['folders'] << folder if folder.name.downcase.include? term.downcase
      options['files'] += folder.user_files.where('lower(attachment_file_name) LIKE ?', "%#{term.downcase}%").all.to_a
      folder.children.each do |f|
        search_folder(term, f, options)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
boxroom-0.0.2 app/concepts/boxroom/search/operations/files_and_folders.rb