lib/datetime-scopes/date_proxy.rb in datetime-scopes-1.0.0.alpha1 vs lib/datetime-scopes/date_proxy.rb in datetime-scopes-1.0.0.alpha2
- old
+ new
@@ -27,56 +27,98 @@
PROXY_METHODS
end
# Intervals
- def within_days(from, to, time_zone: @time_zone)
- @klass.where(
- "#{@attribute}) >= ? AND #{@attribute} <= ?",
+ def within_days(rel, from, to, time_zone: @time_zone)
+ rel.where(
+ "#{@attribute} >= ? AND #{@attribute} <= ?",
from.in_time_zone(time_zone).to_date,
to.in_time_zone(time_zone).to_date
)
end
- def within_months(from, to, time_zone: @time_zone)
+ def within_months(rel, from, to, time_zone: @time_zone)
within_days(
+ rel,
from.in_time_zone(time_zone).beginning_of_month,
to.in_time_zone(time_zone).end_of_month,
time_zone: time_zone
)
end
- def within_years(from, to, time_zone: @time_zone)
+ def within_years(rel, from, to, time_zone: @time_zone)
within_days(
+ rel,
from.in_time_zone(time_zone).beginning_of_year,
to.in_time_zone(time_zone).end_of_year,
time_zone: time_zone
)
end
# Specific day/month/year
- def on_day(day, time_zone: @time_zone) ; within_days day, day, time_zone: time_zone ; end
- def on_month(month, time_zone: @time_zone) ; within_months month, month, time_zone: time_zone ; end
- def on_year(year, time_zone: @time_zone) ; within_years year, year, time_zone: time_zone ; end
+ def on_day(rel, day, time_zone: @time_zone)
+ within_days rel, day, day, time_zone: time_zone
+ end
+ def on_month(rel, month, time_zone: @time_zone)
+ within_months rel, month, month, time_zone: time_zone
+ end
+
+ def on_year(rel, year, time_zone: @time_zone)
+ within_years rel, year, year, time_zone: time_zone
+ end
+
# Strict equations
- def before_day(day, time_zone: @time_zone) ; @klass.where "#{@attribute} < ?", day.in_time_zone(time_zone).to_date ; end
- def before_month(month, time_zone: @time_zone) ; before_day month.in_time_zone(time_zone).beginning_of_month, time_zone: time_zone ; end
- def before_year(year, time_zone: @time_zone) ; before_day year.in_time_zone(time_zone).beginning_of_year, time_zone: time_zone ; end
+ def before_day(rel, day, time_zone: @time_zone)
+ rel.where "#{@attribute} < ?", day.in_time_zone(time_zone).to_date
+ end
- def after_day(day, time_zone: @time_zone) ; @klass.where "#{@attribute} > ?", day.in_time_zone(time_zone).to_date ; end
- def after_month(month, time_zone: @time_zone) ; after_day month.in_time_zone(time_zone).end_of_month, time_zone: time_zone ; end
- def after_year(year, time_zone: @time_zone) ; after_day year.in_time_zone(time_zone).end_of_year, time_zone: time_zone ; end
+ def before_month(rel, month, time_zone: @time_zone)
+ before_day rel, month.in_time_zone(time_zone).beginning_of_month, time_zone: time_zone
+ end
+ def before_year(rel, year, time_zone: @time_zone)
+ before_day rel, year.in_time_zone(time_zone).beginning_of_year, time_zone: time_zone
+ end
+
+ def after_day(rel, day, time_zone: @time_zone)
+ rel.where "#{@attribute} > ?", day.in_time_zone(time_zone).to_date
+ end
+
+ def after_month(rel, month, time_zone: @time_zone)
+ after_day rel, month.in_time_zone(time_zone).end_of_month, time_zone: time_zone
+ end
+
+ def after_year(rel, year, time_zone: @time_zone)
+ after_day rel, year.in_time_zone(time_zone).end_of_year, time_zone: time_zone
+ end
+
# Non-strict equations
- def on_or_before_day(day, time_zone: @time_zone) ; @klass.where "#{@attribute} <= ?", day.in_time_zone(time_zone).to_date ; end
- def on_or_before_month(month, time_zone: @time_zone) ; on_or_before_day month.in_time_zone(time_zone).end_of_month, time_zone: time_zone ; end
- def on_or_before_year(year, time_zone: @time_zone) ; on_or_before_day year.in_time_zone(time_zone).end_of_year, time_zone: time_zone ; end
+ def on_or_before_day(rel, day, time_zone: @time_zone)
+ rel.where "#{@attribute} <= ?", day.in_time_zone(time_zone).to_date
+ end
- def on_or_after_day(day, time_zone: @time_zone) ; @klass.where "#{@attribute} >= ?", day.in_time_zone(time_zone).to_date ; end
- def on_or_after_month(month, time_zone: @time_zone) ; on_or_after_day month.in_time_zone(time_zone).beginning_of_month, time_zone: time_zone ; end
- def on_or_after_year(year, time_zone: @time_zone) ; on_or_after_day year.in_time_zone(time_zone).beginning_of_year, time_zone: time_zone ; end
+ def on_or_before_month(rel, month, time_zone: @time_zone)
+ on_or_before_day rel, month.in_time_zone(time_zone).end_of_month, time_zone: time_zone
+ end
+
+ def on_or_before_year(rel, year, time_zone: @time_zone)
+ on_or_before_day rel, year.in_time_zone(time_zone).end_of_year, time_zone: time_zone
+ end
+
+ def on_or_after_day(rel, day, time_zone: @time_zone)
+ rel.where "#{@attribute} >= ?", day.in_time_zone(time_zone).to_date
+ end
+
+ def on_or_after_month(rel, month, time_zone: @time_zone)
+ on_or_after_day rel, month.in_time_zone(time_zone).beginning_of_month, time_zone: time_zone
+ end
+
+ def on_or_after_year(rel, year, time_zone: @time_zone)
+ on_or_after_day rel, year.in_time_zone(time_zone).beginning_of_year, time_zone: time_zone
+ end
end
end