• 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

33.33
/app/classes/query/scope_modules/low_level_queries.rb
1
# frozen_string_literal: true
2

3
# lower level conditions to be added to Query AR
4
module Query::ScopeModules::LowLevelQueries
1✔
5
  # Execute query after wrapping select clause in COUNT().
6
  def select_count(args = {})
1✔
NEW
7
    initialize_query unless initialized?
×
NEW
8
    if executor
×
NEW
9
      executor.call(args).length
×
10
    else
NEW
11
      select = args[:select] || "DISTINCT #{model.table_name}.id"
×
NEW
12
      args = args.merge(select: "COUNT(#{select})")
×
NEW
13
      model.connection.select_value(sql(args)).to_i
×
14
    end
15
  end
16

17
  # Call model.connection.select_value.
18
  def select_value(args = {})
1✔
NEW
19
    initialize_query unless initialized?
×
NEW
20
    if executor
×
NEW
21
      executor.call(args).first.first
×
22
    else
NEW
23
      model.connection.select_value(sql(args))
×
24
    end
25
  end
26

27
  # Call model.connection.select_values.
28
  def select_values(args = {})
1✔
NEW
29
    initialize_query unless initialized?
×
NEW
30
    if executor
×
NEW
31
      executor.call(args).map(&:first)
×
32
    else
NEW
33
      model.connection.select_values(sql(args))
×
34
    end
35
  end
36

37
  # Call model.connection.select_rows.
38
  def select_rows(args = {})
1✔
NEW
39
    initialize_query unless initialized?
×
NEW
40
    if executor
×
NEW
41
      executor.call(args)
×
42
    else
NEW
43
      model.connection.select_rows(sql(args))
×
44
    end
45
  end
46

47
  # Call model.connection.select_one.
48
  def select_one(args = {})
1✔
NEW
49
    initialize_query unless initialized?
×
NEW
50
    if executor
×
NEW
51
      executor.call(args).first
×
52
    else
NEW
53
      model.connection.select_one(sql(args))
×
54
    end
55
  end
56

57
  # Call model.connection.select_all.
58
  def select_all(args = {})
1✔
NEW
59
    initialize_query unless initialized?
×
NEW
60
    raise("This query doesn't support low-level access!") if executor
×
61

NEW
62
    model.connection.select_all(sql(args)).to_a
×
63
  end
64

65
  # Call model.find_by_sql.
66
  def find_by_sql(args = {})
1✔
NEW
67
    initialize_query unless initialized?
×
NEW
68
    raise("This query doesn't support low-level access!") if executor
×
69

NEW
70
    model.find_by_sql(sql_select_all_columns(args))
×
71
  end
72

73
  # Return an Array of tables used in this query (Symbol's).
74
  def tables_used
1✔
NEW
75
    initialize_query unless initialized?
×
NEW
76
    table_list.map(&:to_s).sort.map(&:to_sym)
×
77
  end
78

79
  # Does this query use a given table?  (Takes String or Symbol.)
80
  def uses_table?(table)
1✔
NEW
81
    initialize_query unless initialized?
×
NEW
82
    table_list.map(&:to_s).include?(table.to_s)
×
83
  end
84

85
  # Does this query join to the given table? (Takes a Symbol; distinguishes
86
  # the different ways to join to a given table via the "table.field"
87
  # syntax used in +join_conditions+ table.)
88
  def uses_join?(join_spec)
1✔
NEW
89
    initialize_query unless initialized?
×
NEW
90
    uses_join_sub(join, join_spec)
×
91
  end
92

93
  def uses_join_sub(tree, arg) # :nodoc:
1✔
94
    case tree
7✔
95
    when Array
96
      tree.any? { |sub| uses_join_sub(sub, arg) }
3✔
97
    when Hash
98
      tree.key?(arg) ||
2✔
99
        tree.values.any? { |sub| uses_join_sub(sub, arg) }
1✔
100
    else
101
      (tree == arg)
3✔
102
    end
103
  end
104
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