Class: Clearly::Query::Compose::Custom

Inherits:
Object
  • Object
show all
Includes:
Comparison, Core, Range, Special, Subset, Validate
Defined in:
lib/clearly/query/compose/custom.rb

Overview

Public class for creating custom queries.

Instance Method Summary collapse

Methods included from Validate

#like_syntax, #sanitize_like_value, #sanitize_similar_to_value, #validate_array, #validate_array_items, #validate_association, #validate_boolean, #validate_condition, #validate_definition, #validate_definition_instance, #validate_float, #validate_hash, #validate_integer, #validate_model, #validate_name, #validate_node_or_attribute, #validate_not_blank, #validate_query, #validate_spec_association, #validate_symbol, #validate_table, #validate_table_column

Methods included from Range

#parse_interval, #parse_range

Instance Method Details

#compose_contains(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create contains condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



126
127
128
129
# File 'lib/clearly/query/compose/custom.rb', line 126

def compose_contains(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_contains_node(table[column_name], value)
end

#compose_ends_with(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create ends_with condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



170
171
172
173
# File 'lib/clearly/query/compose/custom.rb', line 170

def compose_ends_with(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_ends_with_node(table[column_name], value)
end

#compose_eq(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create equals condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



20
21
22
23
# File 'lib/clearly/query/compose/custom.rb', line 20

def compose_eq(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_eq_node(table[column_name], value)
end

#compose_gt(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create greater than condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



63
64
65
66
# File 'lib/clearly/query/compose/custom.rb', line 63

def compose_gt(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_gt_node(table[column_name], value)
end

#compose_gteq(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create greater than or equal condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



105
106
107
108
# File 'lib/clearly/query/compose/custom.rb', line 105

def compose_gteq(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_gteq_node(table[column_name], value)
end

#compose_in(table, column_name, allowed, values) ⇒ Arel::Nodes::Node

Create IN condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • values (Array)

Returns:

  • (Arel::Nodes::Node)

    condition



192
193
194
195
# File 'lib/clearly/query/compose/custom.rb', line 192

def compose_in(table, column_name, allowed, values)
  validate_table_column(table, column_name, allowed)
  compose_in_node(table[column_name], values)
end

#compose_lt(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create less than condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



42
43
44
45
# File 'lib/clearly/query/compose/custom.rb', line 42

def compose_lt(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_lt_node(table[column_name], value)
end

#compose_lteq(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create less than or equal condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



84
85
86
87
# File 'lib/clearly/query/compose/custom.rb', line 84

def compose_lteq(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_lteq_node(table[column_name], value)
end

#compose_not_contains(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not contains condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



137
138
139
140
# File 'lib/clearly/query/compose/custom.rb', line 137

def compose_not_contains(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_not_contains_node(table[column_name], value)
end

#compose_not_ends_with(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not ends_with condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



181
182
183
184
# File 'lib/clearly/query/compose/custom.rb', line 181

def compose_not_ends_with(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_not_ends_with_node(table[column_name], value)
end

#compose_not_eq(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not equals condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



31
32
33
34
# File 'lib/clearly/query/compose/custom.rb', line 31

def compose_not_eq(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_not_eq_node(table[column_name], value)
end

#compose_not_gt(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not greater than condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



74
75
76
# File 'lib/clearly/query/compose/custom.rb', line 74

def compose_not_gt(table, column_name, allowed, value)
  compose_lteq(table, column_name, allowed, value)
end

#compose_not_gteq(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not greater than or equal condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



116
117
118
# File 'lib/clearly/query/compose/custom.rb', line 116

def compose_not_gteq(table, column_name, allowed, value)
  compose_lt(table, column_name, allowed, value)
end

#compose_not_in(table, column_name, allowed, values) ⇒ Arel::Nodes::Node

Create NOT IN condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • values (Array)

Returns:

  • (Arel::Nodes::Node)

    condition



203
204
205
206
# File 'lib/clearly/query/compose/custom.rb', line 203

def compose_not_in(table, column_name, allowed, values)
  validate_table_column(table, column_name, allowed)
  compose_not_in_node(table[column_name], values)
end

#compose_not_lt(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not less than condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



53
54
55
# File 'lib/clearly/query/compose/custom.rb', line 53

def compose_not_lt(table, column_name, allowed, value)
  compose_gteq(table, column_name, allowed, value)
end

#compose_not_lteq(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not less than or equal condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



95
96
97
# File 'lib/clearly/query/compose/custom.rb', line 95

def compose_not_lteq(table, column_name, allowed, value)
  compose_gt(table, column_name, allowed, value)
end

#compose_not_range(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create NOT IN condition using from (inclusive) and to (exclusive).

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



260
261
262
263
# File 'lib/clearly/query/compose/custom.rb', line 260

def compose_not_range(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_not_range_node(table[column_name], value)
end

#compose_not_regex(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create negated regular expression condition. Not available just now, maybe in Arel 6?

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



226
227
228
229
# File 'lib/clearly/query/compose/custom.rb', line 226

def compose_not_regex(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_not_regex_node(table[column_name], value)
end

#compose_not_starts_with(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create not starts_with condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



159
160
161
162
# File 'lib/clearly/query/compose/custom.rb', line 159

def compose_not_starts_with(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_not_starts_with_node(table[column_name], value)
end

#compose_null(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create null comparison.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Boolean)

Returns:

  • (Arel::Nodes::Node)

    condition



237
238
239
240
241
# File 'lib/clearly/query/compose/custom.rb', line 237

def compose_null(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  validate_boolean(value)
  compose_null_node(table[column_name], value)
end

#compose_range(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create IN condition using from (inclusive) and to (exclusive).

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



249
250
251
252
# File 'lib/clearly/query/compose/custom.rb', line 249

def compose_range(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_range_node(table[column_name], value)
end

#compose_regex(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create regular expression condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



214
215
216
217
# File 'lib/clearly/query/compose/custom.rb', line 214

def compose_regex(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_regex_node(table[column_name], value)
end

#compose_starts_with(table, column_name, allowed, value) ⇒ Arel::Nodes::Node

Create starts_with condition.

Parameters:

  • table (Arel::Table)
  • column_name (Symbol)
  • allowed (Array<Symbol>)
  • value (Object)

Returns:

  • (Arel::Nodes::Node)

    condition



148
149
150
151
# File 'lib/clearly/query/compose/custom.rb', line 148

def compose_starts_with(table, column_name, allowed, value)
  validate_table_column(table, column_name, allowed)
  compose_starts_with_node(table[column_name], value)
end