Tidy up notes#search

This commit is contained in:
Tom Hughes 2018-10-11 18:32:31 +01:00
parent db13180c70
commit aef5273e95

View file

@ -255,23 +255,28 @@ class NotesController < ApplicationController
## ##
# Return a list of notes matching a given string # Return a list of notes matching a given string
def search def search
# Filter either by the name or the id of the user # Get the initial set of notes
@notes = closed_condition(Note.all)
# Add any user filter
if params[:display_name] || params[:user]
if params[:display_name] if params[:display_name]
@user = User.find_by(:display_name => params[:display_name]) @user = User.find_by(:display_name => params[:display_name])
raise OSM::APIBadUserInput, "User #{params[:display_name]} not known" unless @user raise OSM::APIBadUserInput, "User #{params[:display_name]} not known" unless @user
elsif params[:user] else
@user = User.find_by(:id => params[:user]) @user = User.find_by(:id => params[:user])
raise OSM::APIBadUserInput, "User #{params[:user]} not known" unless @user raise OSM::APIBadUserInput, "User #{params[:user]} not known" unless @user
end end
@notes = closed_condition(Note.all) @notes = @notes.joins(:comments).where(:note_comments => { :author_id => @user })
end
@notes = @notes.joins(:comments).where(:note_comments => { :author_id => @user }) if @user # Add any text filter
# Filter by a given string
@notes = @notes.joins(:comments).where("to_tsvector('english', note_comments.body) @@ plainto_tsquery('english', ?)", params[:q]) if params[:q] @notes = @notes.joins(:comments).where("to_tsvector('english', note_comments.body) @@ plainto_tsquery('english', ?)", params[:q]) if params[:q]
# Filter by a given start date and an optional end date # Add any date filter
if params[:from] if params[:from]
begin begin
from = Time.parse(params[:from]) from = Time.parse(params[:from])
@ -288,6 +293,7 @@ class NotesController < ApplicationController
rescue ArgumentError rescue ArgumentError
raise OSM::APIBadUserInput, "Date #{params[:to]} is in a wrong format" raise OSM::APIBadUserInput, "Date #{params[:to]} is in a wrong format"
end end
@notes = @notes.where(:created_at => from..to) @notes = @notes.where(:created_at => from..to)
end end