From c14163936b56045789e8e1a27d0725a6d894d7b0 Mon Sep 17 00:00:00 2001 From: Alexander Olofsson <alexander.olofsson@liu.se> Date: Fri, 8 Sep 2023 16:15:48 +0200 Subject: [PATCH] Handle search queries with multiple values per key --- lib/liudesk_cmdb/model.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/liudesk_cmdb/model.rb b/lib/liudesk_cmdb/model.rb index 6f6e412..b4e0c3d 100644 --- a/lib/liudesk_cmdb/model.rb +++ b/lib/liudesk_cmdb/model.rb @@ -87,8 +87,16 @@ module LiudeskCMDB if query.is_a? Hash op = query.delete(:op) { :and } op = { or: ",", and: ";" }.fetch(op, ";") + query = query.transform_keys { |k| fields.key?(k) ? fields.dig(k, :name) : k } - query = query.map { |k, v| "#{k}==#{v}" }.join(op) + query = query.map do |k, v| + if v.is_a? Array + v.map { |val| "#{k}==#{val}" }.join(op) + else + "#{k}==#{v}" + end + end + query = query.reject { |v| v.nil? || v.empty? }.join(op) end data = JSON.parse(client.get([api_url, "search"].join("/"), model_version, query: { query: query })) -- GitLab