@@ -320,14 +320,14 class Query < ActiveRecord::Base | |||
|
320 | 320 | |
|
321 | 321 | private |
|
322 | 322 | |
|
323 |
# Helper method to generate the WHERE sql for a +field+ with a value |
|
|
324 | def sql_for_field(field, v, db_table, db_field, is_custom_filter) | |
|
323 | # Helper method to generate the WHERE sql for a +field+ with a +value+ | |
|
324 | def sql_for_field(field, value, db_table, db_field, is_custom_filter) | |
|
325 | 325 | sql = '' |
|
326 | 326 | case operator_for field |
|
327 | 327 | when "=" |
|
328 | sql = "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" | |
|
328 | sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" | |
|
329 | 329 | when "!" |
|
330 | sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" | |
|
330 | sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" | |
|
331 | 331 | when "!*" |
|
332 | 332 | sql = "#{db_table}.#{db_field} IS NULL" |
|
333 | 333 | sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter |
@@ -335,25 +335,25 class Query < ActiveRecord::Base | |||
|
335 | 335 | sql = "#{db_table}.#{db_field} IS NOT NULL" |
|
336 | 336 | sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter |
|
337 | 337 | when ">=" |
|
338 | sql = "#{db_table}.#{db_field} >= #{v.first.to_i}" | |
|
338 | sql = "#{db_table}.#{db_field} >= #{value.first.to_i}" | |
|
339 | 339 | when "<=" |
|
340 | sql = "#{db_table}.#{db_field} <= #{v.first.to_i}" | |
|
340 | sql = "#{db_table}.#{db_field} <= #{value.first.to_i}" | |
|
341 | 341 | when "o" |
|
342 | 342 | sql = "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id" |
|
343 | 343 | when "c" |
|
344 | 344 | sql = "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id" |
|
345 | 345 | when ">t-" |
|
346 | sql = date_range_clause(db_table, db_field, - v.first.to_i, 0) | |
|
346 | sql = date_range_clause(db_table, db_field, - value.first.to_i, 0) | |
|
347 | 347 | when "<t-" |
|
348 | sql = date_range_clause(db_table, db_field, nil, - v.first.to_i) | |
|
348 | sql = date_range_clause(db_table, db_field, nil, - value.first.to_i) | |
|
349 | 349 | when "t-" |
|
350 | sql = date_range_clause(db_table, db_field, - v.first.to_i, - v.first.to_i) | |
|
350 | sql = date_range_clause(db_table, db_field, - value.first.to_i, - value.first.to_i) | |
|
351 | 351 | when ">t+" |
|
352 | sql = date_range_clause(db_table, db_field, v.first.to_i, nil) | |
|
352 | sql = date_range_clause(db_table, db_field, value.first.to_i, nil) | |
|
353 | 353 | when "<t+" |
|
354 | sql = date_range_clause(db_table, db_field, 0, v.first.to_i) | |
|
354 | sql = date_range_clause(db_table, db_field, 0, value.first.to_i) | |
|
355 | 355 | when "t+" |
|
356 | sql = date_range_clause(db_table, db_field, v.first.to_i, v.first.to_i) | |
|
356 | sql = date_range_clause(db_table, db_field, value.first.to_i, value.first.to_i) | |
|
357 | 357 | when "t" |
|
358 | 358 | sql = date_range_clause(db_table, db_field, 0, 0) |
|
359 | 359 | when "w" |
@@ -364,9 +364,9 class Query < ActiveRecord::Base | |||
|
364 | 364 | Time.now.at_beginning_of_week |
|
365 | 365 | sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)] |
|
366 | 366 | when "~" |
|
367 | sql = "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(v.first)}%'" | |
|
367 | sql = "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(value.first)}%'" | |
|
368 | 368 | when "!~" |
|
369 | sql = "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(v.first)}%'" | |
|
369 | sql = "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(value.first)}%'" | |
|
370 | 370 | end |
|
371 | 371 | |
|
372 | 372 | return sql |
General Comments 0
You need to be logged in to leave comments.
Login now