From 3eccdd502d43a592de39fc48120654a34c27cdd4 Mon Sep 17 00:00:00 2001 From: ErickFabian Date: Tue, 30 Mar 2021 10:48:44 -0600 Subject: [PATCH] Adds collection view and find all methods --- lib/dolly/query.rb | 8 ++++++++ lib/dolly/view_query.rb | 11 +++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/dolly/query.rb b/lib/dolly/query.rb index 2aa5c58..e831b71 100644 --- a/lib/dolly/query.rb +++ b/lib/dolly/query.rb @@ -17,6 +17,14 @@ def find *keys raise(Dolly::ResourceNotFound) end + def find_all(*keys) + query_hash = { keys: namespace_keys(keys).map { |k| k.cgi_escape } } + return [] if query_hash[:keys].none? + + keys_to_find_counter = query_hash[:keys].length + build_collection(query_hash).first_or_all(true)&.itself + end + def safe_find *keys find *keys rescue Dolly::ResourceNotFound diff --git a/lib/dolly/view_query.rb b/lib/dolly/view_query.rb index f842514..b57adcd 100644 --- a/lib/dolly/view_query.rb +++ b/lib/dolly/view_query.rb @@ -2,13 +2,20 @@ module Dolly module ViewQuery - def raw_view(doc, view_name, opts = {}) - design = "_design/#{doc}/_view/#{view_name}" + def raw_view(design, view_name, opts = {}) + design = "_design/#{design}/_view/#{view_name}" connection.view(design, opts) end def view_value(doc, view_name, opts = {}) raw_view(doc, view_name, opts)[:rows].flat_map { |result| result[:value] } end + + def collection_view(design, view_name, opts = {}) + opts.delete(:include_docs) + design = "_design/#{design}/_view/#{view_name}" + response = connection.view(design, opts) + Dolly::Collection.new(rows: response, options: opts) + end end end