Class: OrderQuery::OrderCondition
- Inherits:
-
Object
- Object
- OrderQuery::OrderCondition
- Defined in:
- lib/order_query/order_condition.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#order ⇒ Object
readonly
Returns the value of attribute order.
-
#order_order ⇒ Object
readonly
Returns the value of attribute order_order.
-
#scope ⇒ Object
readonly
Returns the value of attribute scope.
Instance Method Summary collapse
- #col_name_sql ⇒ Object
- #complete? ⇒ Boolean
-
#filter_values(value, mode, strict = true) ⇒ Array
Valid order values before / after passed (depending on the mode).
-
#initialize(scope, spec) ⇒ OrderCondition
constructor
A new instance of OrderCondition.
-
#list? ⇒ Boolean
Whether order is specified as a list of values.
- #unique? ⇒ Boolean
Constructor Details
#initialize(scope, spec) ⇒ OrderCondition
Returns a new instance of OrderCondition.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/order_query/order_condition.rb', line 7 def initialize(scope, spec) spec = spec.dup = spec. @name = spec[0] @order = spec[1] || :asc @order_order = spec[2] || :desc @options = @scope = scope @unique = if .key?(:unique) !![:unique] else name.to_s == scope.primary_key end @complete = if .key?(:complete) !![:complete] else !list? end end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def @options end |
#order ⇒ Object (readonly)
Returns the value of attribute order.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def order @order end |
#order_order ⇒ Object (readonly)
Returns the value of attribute order_order.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def order_order @order_order end |
#scope ⇒ Object (readonly)
Returns the value of attribute scope.
3 4 5 |
# File 'lib/order_query/order_condition.rb', line 3 def scope @scope end |
Instance Method Details
#col_name_sql ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/order_query/order_condition.rb', line 59 def col_name_sql @col_name_sql ||= begin sql = [:sql] if sql sql = sql.call if sql.respond_to?(:call) sql else scope.connection.quote_table_name(scope.table_name) + '.' + scope.connection.quote_column_name(name) end end end |
#complete? ⇒ Boolean
31 32 33 |
# File 'lib/order_query/order_condition.rb', line 31 def complete? @complete end |
#filter_values(value, mode, strict = true) ⇒ Array
Returns valid order values before / after passed (depending on the mode).
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/order_query/order_condition.rb', line 43 def filter_values(value, mode, strict = true) ord = order pos = ord.index(value) if pos dir = order_order if mode == :after && dir == :desc || mode == :before && dir == :asc ord.from pos + (strict ? 1 : 0) else ord.first pos + (strict ? 0 : 1) end else # default to all if current is not in sort order values ord end end |
#list? ⇒ Boolean
Returns whether order is specified as a list of values.
36 37 38 |
# File 'lib/order_query/order_condition.rb', line 36 def list? order.is_a?(Enumerable) end |
#unique? ⇒ Boolean
27 28 29 |
# File 'lib/order_query/order_condition.rb', line 27 def unique? @unique end |