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/request.rb b/lib/dolly/request.rb index 82abd3f..d9aacb0 100644 --- a/lib/dolly/request.rb +++ b/lib/dolly/request.rb @@ -1,19 +1,19 @@ module Dolly module Request - def set_namespace name - @namespace = name + def set_db_namespace(name) + @_db_namespace = name end - def set_app_env env + def set_app_env(env) @app_env = env end def connection - @connection ||= Connection.new(namespace, app_env) + @connection ||= Connection.new(db_namespace, app_env) end - def namespace - @namespace ||= :default + def db_namespace + @_db_namespace ||= :default end def app_env diff --git a/lib/dolly/view_query.rb b/lib/dolly/view_query.rb index f842514..f25eea3 100644 --- a/lib/dolly/view_query.rb +++ b/lib/dolly/view_query.rb @@ -2,13 +2,25 @@ module Dolly module ViewQuery - def raw_view(doc, view_name, opts = {}) - design = "_design/#{doc}/_view/#{view_name}" + def raw_view(design, view_name, opts = {}) + include_docs = opts.delete(:include_docs) + include_docs ||= 'true' + + 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] } + def view_value(design, view_name, opts = {}) + raw_view(design, view_name, opts)[:rows].flat_map { |result| result[:value] } + end + + def collection_view(design, view_name, opts = {}) + include_docs = opts.delete(:include_docs) + include_docs ||= 'true' + + design = "_design/#{design}/_view/#{view_name}" + response = connection.view(design, opts) + Dolly::Collection.new(rows: response, options: opts) end end end