• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

MushroomObserver / mushroom-observer / 14145379140

29 Mar 2025 11:58AM UTC coverage: 84.27% (-9.7%) from 93.985%
14145379140

Pull #2808

github

nimmolo
Handle rss_log content filters with subqueries
Pull Request #2808: Convert Query to AR scopes

477 of 2306 new or added lines in 78 files covered. (20.69%)

1381 existing lines in 27 files now uncovered.

26562 of 31520 relevant lines covered (84.27%)

536.24 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/app/classes/query/modules/datetime.rb
1
# frozen_string_literal: true
2

3
# Helper methods for adding date and time conditions to query.
UNCOV
4
module Query::Modules::Datetime
×
UNCOV
5
  def add_date_condition(col, vals, *joins)
×
UNCOV
6
    return if vals.empty?
×
7

8
    # Special case for search by month/day where range of months wraps
9
    # around from December to January.
UNCOV
10
    if vals[0].to_s.match(/^\d\d-\d\d$/) &&
×
UNCOV
11
       vals[1].to_s.match(/^\d\d-\d\d$/) &&
×
UNCOV
12
       vals[0].to_s > vals[1].to_s
×
UNCOV
13
      add_wrapped_date_condition(col, vals)
×
UNCOV
14
    else
×
UNCOV
15
      add_half_date_condition(true, col, vals[0])
×
UNCOV
16
      add_half_date_condition(false, col, vals[1])
×
UNCOV
17
    end
×
UNCOV
18
    add_joins(*joins)
×
UNCOV
19
  end
×
20

UNCOV
21
  def add_time_condition(col, vals, *joins)
×
UNCOV
22
    return unless vals
×
23

UNCOV
24
    add_half_time_condition(true, col, vals[0])
×
UNCOV
25
    add_half_time_condition(false, col, vals[1])
×
UNCOV
26
    add_joins(*joins)
×
UNCOV
27
  end
×
28

29
  # ----------------------------------------------------------------------------
30

UNCOV
31
  private
×
32

UNCOV
33
  def add_wrapped_date_condition(col, vals)
×
UNCOV
34
    m1, d1 = vals[0].to_s.split("-")
×
UNCOV
35
    m2, d2 = vals[1].to_s.split("-")
×
UNCOV
36
    @where << "MONTH(#{col}) > #{m1} OR " \
×
UNCOV
37
              "MONTH(#{col}) < #{m2} OR " \
×
UNCOV
38
              "(MONTH(#{col}) = #{m1} AND DAY(#{col}) >= #{d1}) OR " \
×
UNCOV
39
              "(MONTH(#{col}) = #{m2} AND DAY(#{col}) <= #{d2})"
×
UNCOV
40
  end
×
41

UNCOV
42
  def add_half_date_condition(min, col, val)
×
UNCOV
43
    dir = min ? ">" : "<"
×
UNCOV
44
    if /^\d\d\d\d/.match?(val.to_s)
×
UNCOV
45
      y, m, d = val.split("-")
×
UNCOV
46
      @where << format("#{col} #{dir}= '%04d-%02d-%02d'",
×
UNCOV
47
                       y.to_i,
×
UNCOV
48
                       (m || (min ? 1 : 12)).to_i,
×
UNCOV
49
                       (d || (min ? 1 : 31)).to_i)
×
UNCOV
50
    elsif /-/.match?(val.to_s)
×
UNCOV
51
      m, d = val.split("-")
×
UNCOV
52
      @where << "MONTH(#{col}) #{dir} #{m} OR " \
×
UNCOV
53
                "(MONTH(#{col}) = #{m} AND " \
×
UNCOV
54
                "DAY(#{col}) #{dir}= #{d})"
×
UNCOV
55
    elsif val.present?
×
UNCOV
56
      @where << "MONTH(#{col}) #{dir}= #{val}"
×
UNCOV
57
    end
×
UNCOV
58
  end
×
59

UNCOV
60
  DATE_FORMAT = "STR_TO_DATE('%04d-%02d-%02d %02d:%02d:%02d', %s)"
×
UNCOV
61
  SQL_DATE_FORMAT = "'%Y-%m-%d %H:%i:%s'"
×
62

UNCOV
63
  def add_half_time_condition(min, col, val)
×
UNCOV
64
    return if val.blank?
×
65

UNCOV
66
    y, m, d, h, n, s = val.split("-")
×
UNCOV
67
    @where << format(
×
UNCOV
68
      "#{col} #{min ? ">" : "<"}= #{DATE_FORMAT}",
×
UNCOV
69
      y.to_i,
×
UNCOV
70
      (m || (min ? 1 : 12)).to_i,
×
UNCOV
71
      (d || (min ? 1 : 31)).to_i,
×
UNCOV
72
      (h || (min ? 0 : 23)).to_i,
×
UNCOV
73
      (n || (min ? 0 : 59)).to_i,
×
UNCOV
74
      (s || (min ? 0 : 59)).to_i,
×
UNCOV
75
      SQL_DATE_FORMAT
×
UNCOV
76
    )
×
UNCOV
77
  end
×
UNCOV
78
end
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc