summaryrefslogtreecommitdiff
path: root/lib/gitlab/sql
diff options
context:
space:
mode:
authorHiroyuki Sato <sathiroyuki@gmail.com>2017-08-29 07:14:41 +0900
committerHiroyuki Sato <sathiroyuki@gmail.com>2017-08-29 07:14:41 +0900
commit87b51c5981db3b1b9831b01ca6e74127d57dc2d9 (patch)
tree711dcce0d9a49385cae82854ecbbbc13b09b9806 /lib/gitlab/sql
parent866aab7f2a92f9929a5c5811d3d3c23c11184b26 (diff)
downloadgitlab-ce-87b51c5981db3b1b9831b01ca6e74127d57dc2d9.tar.gz
Move the logic to a concern
Diffstat (limited to 'lib/gitlab/sql')
-rw-r--r--lib/gitlab/sql/pattern.rb39
1 files changed, 16 insertions, 23 deletions
diff --git a/lib/gitlab/sql/pattern.rb b/lib/gitlab/sql/pattern.rb
index 46c973d8a11..26bfeeeee67 100644
--- a/lib/gitlab/sql/pattern.rb
+++ b/lib/gitlab/sql/pattern.rb
@@ -1,33 +1,26 @@
module Gitlab
module SQL
- class Pattern
- MIN_CHARS_FOR_PARTIAL_MATCHING = 3
-
- attr_reader :query
+ module Pattern
+ extend ActiveSupport::Concern
- def initialize(query)
- @query = query
- end
+ MIN_CHARS_FOR_PARTIAL_MATCHING = 3
- def to_sql
- if exact_matching?
- sanitized_query
- else
- "%#{sanitized_query}%"
+ class_methods do
+ def to_pattern(query)
+ if exact_matching?(query)
+ sanitize_sql_like(query)
+ else
+ "%#{sanitize_sql_like(query)}%"
+ end
end
- end
- def exact_matching?
- !partial_matching?
- end
-
- def partial_matching?
- @query.length >= MIN_CHARS_FOR_PARTIAL_MATCHING
- end
+ def exact_matching?(query)
+ query.length < MIN_CHARS_FOR_PARTIAL_MATCHING
+ end
- def sanitized_query
- # Note: ActiveRecord::Base.sanitize_sql_like is a protected method
- ActiveRecord::Base.__send__(:sanitize_sql_like, query)
+ def partial_matching?(query)
+ query.length >= MIN_CHARS_FOR_PARTIAL_MATCHING
+ end
end
end
end