Class: Sequel::Dataset
- Inherits:
-
Object
- Object
- Sequel::Dataset
- Defined in:
- lib/sequel_replace_select_with_alias.rb
Instance Method Summary collapse
- #_aliased_columns(columns) ⇒ Object
- #_replace_aliases(selects, aliased_columns) ⇒ Object
-
#replace_select_with_alias(*columns, &block) ⇒ Object
Returns a copy of the dataset with the select statements for the given aliased columns replacing the original selects.
Instance Method Details
#_aliased_columns(columns) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/sequel_replace_select_with_alias.rb', line 17 def _aliased_columns(columns) columns.reduce({}) do |aliased_columns, column| case column.alias when nil when Sequel::SQL::Identifier aliased_columns[column.alias.value.to_sym] = column else aliased_columns[column.alias] = column end aliased_columns end end |
#_replace_aliases(selects, aliased_columns) ⇒ Object
31 32 33 |
# File 'lib/sequel_replace_select_with_alias.rb', line 31 def _replace_aliases(selects, aliased_columns) selects.map { |select| aliased_columns[select] || select } end |
#replace_select_with_alias(*columns, &block) ⇒ Object
Returns a copy of the dataset with the select statements for the given aliased columns replacing the original selects. If no aliases are given, it will return the existing selection. If no columns are currently selected, it will select *.
9 10 11 12 13 14 15 |
# File 'lib/sequel_replace_select_with_alias.rb', line 9 def replace_select_with_alias(*columns, &block) virtual_row_columns(columns, block) aliased_columns = _aliased_columns(columns) return self if !@opts[:select] || (@opts[:select] & aliased_columns.keys).empty? select(*_replace_aliases(@opts[:select], aliased_columns)) end |