Class: Sequel::Dataset

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel_replace_select_with_alias.rb

Instance Method Summary collapse

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