summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2017-11-24 11:45:19 +0100
committerDouwe Maan <douwe@selenight.nl>2017-11-24 17:28:50 +0100
commitaedd2cfa5b82c01f82ec26b64880fce2a07fe942 (patch)
treee8c2094d81b86a471fdbb9de4f4a279ec0a0ef75
parentb355ebc4c9b38320366d7640ecf51da23fbb7ea1 (diff)
downloadgitlab-ce-aedd2cfa5b82c01f82ec26b64880fce2a07fe942.tar.gz
Use Gitlab::SQL::Pattern where appropriate
-rw-r--r--app/finders/notes_finder.rb3
-rw-r--r--app/models/ci/runner.rb3
-rw-r--r--app/models/group.rb14
-rw-r--r--app/models/milestone.rb3
-rw-r--r--app/models/namespace.rb3
-rw-r--r--app/models/note.rb5
-rw-r--r--app/models/snippet.rb8
-rw-r--r--app/models/user.rb2
8 files changed, 16 insertions, 25 deletions
diff --git a/app/finders/notes_finder.rb b/app/finders/notes_finder.rb
index 02eb983bf55..12157818bcd 100644
--- a/app/finders/notes_finder.rb
+++ b/app/finders/notes_finder.rb
@@ -104,8 +104,7 @@ class NotesFinder
query = @params[:search]
return notes unless query
- pattern = "%#{query}%"
- notes.where(Note.arel_table[:note].matches(pattern))
+ notes.search(query)
end
# Notes changed since last fetch
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index c6509f89117..d91a66ab5c2 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -1,6 +1,7 @@
module Ci
class Runner < ActiveRecord::Base
extend Gitlab::Ci::Model
+ include Gitlab::SQL::Pattern
RUNNER_QUEUE_EXPIRY_TIME = 60.minutes
ONLINE_CONTACT_TIMEOUT = 1.hour
@@ -60,7 +61,7 @@ module Ci
# Returns an ActiveRecord::Relation.
def self.search(query)
t = arel_table
- pattern = "%#{query}%"
+ pattern = to_pattern(query)
where(t[:token].matches(pattern).or(t[:description].matches(pattern)))
end
diff --git a/app/models/group.rb b/app/models/group.rb
index dc4500360b9..76262acf50c 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -50,20 +50,6 @@ class Group < Namespace
Gitlab::Database.postgresql?
end
- # Searches for groups matching the given query.
- #
- # This method uses ILIKE on PostgreSQL and LIKE on MySQL.
- #
- # query - The search query as a String
- #
- # Returns an ActiveRecord::Relation.
- def search(query)
- table = Namespace.arel_table
- pattern = "%#{query}%"
-
- where(table[:name].matches(pattern).or(table[:path].matches(pattern)))
- end
-
def sort(method)
if method == 'storage_size_desc'
# storage_size is a virtual column so we need to
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index 01458120cda..e25d72cf947 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -13,6 +13,7 @@ class Milestone < ActiveRecord::Base
include Referable
include StripAttribute
include Milestoneish
+ include Gitlab::SQL::Pattern
cache_markdown_field :title, pipeline: :single_line
cache_markdown_field :description
@@ -74,7 +75,7 @@ class Milestone < ActiveRecord::Base
# Returns an ActiveRecord::Relation.
def search(query)
t = arel_table
- pattern = "%#{query}%"
+ pattern = to_pattern(query)
where(t[:title].matches(pattern).or(t[:description].matches(pattern)))
end
diff --git a/app/models/namespace.rb b/app/models/namespace.rb
index 4d401e7ba18..15bc7032a43 100644
--- a/app/models/namespace.rb
+++ b/app/models/namespace.rb
@@ -9,6 +9,7 @@ class Namespace < ActiveRecord::Base
include Routable
include AfterCommitQueue
include Storage::LegacyNamespace
+ include Gitlab::SQL::Pattern
# Prevent users from creating unreasonably deep level of nesting.
# The number 20 was taken based on maximum nesting level of
@@ -87,7 +88,7 @@ class Namespace < ActiveRecord::Base
# Returns an ActiveRecord::Relation
def search(query)
t = arel_table
- pattern = "%#{query}%"
+ pattern = to_pattern(query)
where(t[:name].matches(pattern).or(t[:path].matches(pattern)))
end
diff --git a/app/models/note.rb b/app/models/note.rb
index 50c9caf8529..d2aa8392229 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -14,6 +14,7 @@ class Note < ActiveRecord::Base
include ResolvableNote
include IgnorableColumn
include Editable
+ include Gitlab::SQL::Pattern
module SpecialRole
FIRST_TIME_CONTRIBUTOR = :first_time_contributor
@@ -167,6 +168,10 @@ class Note < ActiveRecord::Base
def has_special_role?(role, note)
note.special_role == role
end
+
+ def search(query)
+ where(arel_table[:note].matches(to_pattern(query)))
+ end
end
def cross_reference?
diff --git a/app/models/snippet.rb b/app/models/snippet.rb
index 2a5f07a15c4..e621404f3ae 100644
--- a/app/models/snippet.rb
+++ b/app/models/snippet.rb
@@ -9,6 +9,7 @@ class Snippet < ActiveRecord::Base
include Mentionable
include Spammable
include Editable
+ include Gitlab::SQL::Pattern
extend Gitlab::CurrentSettings
@@ -136,7 +137,7 @@ class Snippet < ActiveRecord::Base
# Returns an ActiveRecord::Relation.
def search(query)
t = arel_table
- pattern = "%#{query}%"
+ pattern = to_pattern(query)
where(t[:title].matches(pattern).or(t[:file_name].matches(pattern)))
end
@@ -149,10 +150,7 @@ class Snippet < ActiveRecord::Base
#
# Returns an ActiveRecord::Relation.
def search_code(query)
- table = Snippet.arel_table
- pattern = "%#{query}%"
-
- where(table[:content].matches(pattern))
+ where(arel_table[:content].matches(to_pattern(query)))
end
end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index cf6b36559a8..9a35336c574 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -339,7 +339,7 @@ class User < ActiveRecord::Base
def search_with_secondary_emails(query)
table = arel_table
email_table = Email.arel_table
- pattern = "%#{query}%"
+ pattern = to_pattern(query)
matched_by_emails_user_ids = email_table.project(email_table[:user_id]).where(email_table[:email].matches(pattern))
where(