From ea77929d62a372f9c2d6a645efc2ec0202a11016 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Fri, 5 Dec 2008 22:56:03 +0000 Subject: [PATCH] Refactor: Extracted new method Query#sql_for_field from Query#statement in order to clean up Query#statement. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2090 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/query.rb | 99 ++++++++++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 45 deletions(-) diff --git a/app/models/query.rb b/app/models/query.rb index 5ad0dd80..8b036eb5 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -309,51 +309,8 @@ class Query < ActiveRecord::Base v.push(User.current.logged? ? User.current.id.to_s : "0") if v.delete("me") end - case operator_for field - when "=" - sql = sql + "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" - when "!" - sql = sql + "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" - when "!*" - sql = sql + "#{db_table}.#{db_field} IS NULL" - sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter - when "*" - sql = sql + "#{db_table}.#{db_field} IS NOT NULL" - sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter - when ">=" - sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}" - when "<=" - sql = sql + "#{db_table}.#{db_field} <= #{v.first.to_i}" - when "o" - sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id" - when "c" - sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id" - when ">t-" - sql = sql + date_range_clause(db_table, db_field, - v.first.to_i, 0) - when "t+" - sql = sql + date_range_clause(db_table, db_field, v.first.to_i, nil) - when " ''" if is_custom_filter + return sql + when ">=" + return "#{db_table}.#{db_field} >= #{v.first.to_i}" + when "<=" + return "#{db_table}.#{db_field} <= #{v.first.to_i}" + when "o" + return "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id" + when "c" + return "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id" + when ">t-" + return date_range_clause(db_table, db_field, - v.first.to_i, 0) + when "t+" + return date_range_clause(db_table, db_field, v.first.to_i, nil) + when "