Commit e5af5ad

mo <mo.khan@gmail.com>
2019-06-15 19:32:29
extract query for method
1 parent 2eab725
Changed files (2)
app/models/scim/search.rb
@@ -8,15 +8,15 @@ module Scim
       end
 
       def operator
-        @hash[:operator].to_sym
+        self[:operator].to_sym
       end
 
       def attribute
-        @hash[:attribute].to_s
+        self[:attribute].to_s
       end
 
       def value
-        @hash[:value].to_s[1..-2]
+        self[:value].to_s[1..-2]
       end
 
       def not?
app/models/scim/visitor.rb
@@ -42,11 +42,7 @@ module Scim
     end
 
     def visit_equals(node)
-      if node.not?
-        @clazz.where.not(attr_for(node) => node.value)
-      else
-        @clazz.where(attr_for(node) => node.value)
-      end
+      query_for(node, attr_for(node) => node.value)
     end
 
     def visit_not_equals(node)
@@ -58,71 +54,43 @@ module Scim
     end
 
     def visit_contains(node)
-      if node.not?
-        @clazz.where.not(
-          "#{attr_for(node)} LIKE ?", "%#{escape_sql_wildcards(node.value)}%"
-        )
-      else
-        @clazz.where(
-          "#{attr_for(node)} LIKE ?", "%#{escape_sql_wildcards(node.value)}%"
-        )
-      end
+      query_for(
+        node,
+        "#{attr_for(node)} LIKE ?",
+        "%#{escape_sql_wildcards(node.value)}%"
+      )
     end
 
     def visit_starts_with(node)
-      if node.not?
-        @clazz.where.not(
-          "#{attr_for(node)} LIKE ?", "#{escape_sql_wildcards(node.value)}%"
-        )
-      else
-        @clazz.where(
-          "#{attr_for(node)} LIKE ?", "#{escape_sql_wildcards(node.value)}%"
-        )
-      end
+      query_for(
+        node,
+        "#{attr_for(node)} LIKE ?",
+        "#{escape_sql_wildcards(node.value)}%"
+      )
     end
 
     def visit_ends_with(node)
-      if node.not?
-        @clazz.where.not(
-          "#{attr_for(node)} LIKE ?", "%#{escape_sql_wildcards(node.value)}"
-        )
-      else
-        @clazz.where(
-          "#{attr_for(node)} LIKE ?", "%#{escape_sql_wildcards(node.value)}"
-        )
-      end
+      query_for(
+        node,
+        "#{attr_for(node)} LIKE ?",
+        "%#{escape_sql_wildcards(node.value)}"
+      )
     end
 
     def visit_greater_than(node)
-      if node.not?
-        @clazz.where.not("#{attr_for(node)} > ?", cast_value_from(node))
-      else
-        @clazz.where("#{attr_for(node)} > ?", cast_value_from(node))
-      end
+      query_for(node, "#{attr_for(node)} > ?", cast_value_from(node))
     end
 
     def visit_greater_than_equals(node)
-      if node.not?
-        @clazz.where.not("#{attr_for(node)} >= ?", cast_value_from(node))
-      else
-        @clazz.where("#{attr_for(node)} >= ?", cast_value_from(node))
-      end
+      query_for(node, "#{attr_for(node)} >= ?", cast_value_from(node))
     end
 
     def visit_less_than(node)
-      if node.not?
-        @clazz.where.not("#{attr_for(node)} < ?", cast_value_from(node))
-      else
-        @clazz.where("#{attr_for(node)} < ?", cast_value_from(node))
-      end
+      query_for(node, "#{attr_for(node)} < ?", cast_value_from(node))
     end
 
     def visit_less_than_equals(node)
-      if node.not?
-        @clazz.where.not("#{attr_for(node)} <= ?", cast_value_from(node))
-      else
-        @clazz.where("#{attr_for(node)} <= ?", cast_value_from(node))
-      end
+      query_for(node, "#{attr_for(node)} <= ?", cast_value_from(node))
     end
 
     def visit_presence(node)
@@ -149,5 +117,9 @@ module Scim
     def attr_for(node)
       @mapper.fetch(node.attribute, node.attribute)
     end
+
+    def query_for(node, *conditions)
+      node.not? ? @clazz.where.not(*conditions) : @clazz.where(*conditions)
+    end
   end
 end