From 7052deabdebdc9a5e332a7d94233dcf86c4e1448 Mon Sep 17 00:00:00 2001 From: ErickFabian Date: Fri, 26 Mar 2021 14:06:37 -0600 Subject: [PATCH 1/3] Rename db namespace method to avoid clashes --- lib/dolly/collection.rb | 1 + lib/dolly/query.rb | 12 +++++++++++- lib/dolly/request.rb | 12 ++++++------ lib/dolly/view_query.rb | 20 ++++++++++++++++---- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/lib/dolly/collection.rb b/lib/dolly/collection.rb index e816bce..3f0f491 100644 --- a/lib/dolly/collection.rb +++ b/lib/dolly/collection.rb @@ -6,6 +6,7 @@ def initialize(rows: [], options: {}) @options = options #TODO: We should raise an exception if one of the # requested documents is missing + super rows[:rows].map(&collect_docs).compact end diff --git a/lib/dolly/query.rb b/lib/dolly/query.rb index 2aa5c58..b20586b 100644 --- a/lib/dolly/query.rb +++ b/lib/dolly/query.rb @@ -12,11 +12,21 @@ module Query def find *keys query_hash = { keys: namespace_keys(keys).map { |k| k.cgi_escape } } + return [] if query_hash[:keys].none? - build_collection(query_hash).first_or_all&.itself || + keys_to_find_counter = query_hash[:keys].length + build_collection(query_hash).first_or_all(keys_to_find_counter > 1)&.itself || 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 From 7571eeb734b58de576b7174aac151e7c365e4ed8 Mon Sep 17 00:00:00 2001 From: ErickFabian Date: Fri, 26 Mar 2021 14:10:49 -0600 Subject: [PATCH 2/3] Refactor --- lib/dolly/query.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/dolly/query.rb b/lib/dolly/query.rb index b20586b..54c59a9 100644 --- a/lib/dolly/query.rb +++ b/lib/dolly/query.rb @@ -14,8 +14,7 @@ def find *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(keys_to_find_counter > 1)&.itself || + build_collection(query_hash).first_or_all&.itself || raise(Dolly::ResourceNotFound) end From c59ba85cdd745c52f0ca4bba01ee6fad6bac7b15 Mon Sep 17 00:00:00 2001 From: ErickFabian Date: Fri, 26 Mar 2021 14:55:46 -0600 Subject: [PATCH 3/3] Fix conditions --- lib/dolly/collection.rb | 1 - lib/dolly/query.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/dolly/collection.rb b/lib/dolly/collection.rb index 3f0f491..e816bce 100644 --- a/lib/dolly/collection.rb +++ b/lib/dolly/collection.rb @@ -6,7 +6,6 @@ def initialize(rows: [], options: {}) @options = options #TODO: We should raise an exception if one of the # requested documents is missing - super rows[:rows].map(&collect_docs).compact end diff --git a/lib/dolly/query.rb b/lib/dolly/query.rb index 54c59a9..e831b71 100644 --- a/lib/dolly/query.rb +++ b/lib/dolly/query.rb @@ -12,7 +12,6 @@ module Query def find *keys query_hash = { keys: namespace_keys(keys).map { |k| k.cgi_escape } } - return [] if query_hash[:keys].none? build_collection(query_hash).first_or_all&.itself || raise(Dolly::ResourceNotFound)