From 21a6cb7053bfc9ad556e9aa0f191b33b57333752 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 6 Dec 2010 18:47:50 -0500 Subject: [PATCH] add postgres corrections to duration methods --- lib/pacecar/duration.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/pacecar/duration.rb b/lib/pacecar/duration.rb index ee9390e..816c6d9 100644 --- a/lib/pacecar/duration.rb +++ b/lib/pacecar/duration.rb @@ -23,6 +23,16 @@ def define_duration_scopes scope :with_duration_under, lambda { |duration, start, stop| { :conditions => ["abs(datediff(#{quoted_table_name}.#{connection.quote_column_name start}, #{quoted_table_name}.#{connection.quote_column_name stop})) < ?", duration] } } + when 'PostgreSQL' + scope :with_duration_of, lambda { |duration, start, stop| + { :conditions => ["age(#{quoted_table_name}.#{connection.quote_column_name stop}, #{quoted_table_name}.#{connection.quote_column_name start}) = '? days'", duration] } + } + scope :with_duration_over, lambda { |duration, start, stop| + { :conditions => ["age(#{quoted_table_name}.#{connection.quote_column_name stop}, #{quoted_table_name}.#{connection.quote_column_name start}) > interval '? days'", duration] } + } + scope :with_duration_under, lambda { |duration, start, stop| + { :conditions => ["age(#{quoted_table_name}.#{connection.quote_column_name stop}, #{quoted_table_name}.#{connection.quote_column_name start}) < interval '? days'", duration] } + } when 'SQLite' scope :with_duration_of, lambda { |duration, start, stop| { :conditions => ["abs(julianday(#{quoted_table_name}.#{connection.quote_column_name start}) - julianday(#{quoted_table_name}.#{connection.quote_column_name stop})) = ?", duration] }