Class: Chicago::Database::DatasetBuilder Private

Inherits:
Object
  • Object
show all
Defined in:
lib/chicago/database/dataset_builder.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Builds a Sequel::Dataset from column definitions, filters etc.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(db, query) ⇒ DatasetBuilder

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of DatasetBuilder.



9
10
11
12
13
14
15
# File 'lib/chicago/database/dataset_builder.rb', line 9

def initialize(db, query)
  @base_table = query.table
  @query = query
  @dataset = db[query.table.table_name.as(query.table.name)]
  @joined_tables = Set.new
  @selected_columns = []
end

Instance Attribute Details

#datasetObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



7
8
9
# File 'lib/chicago/database/dataset_builder.rb', line 7

def dataset
  @dataset
end

Instance Method Details

#filter(filters) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



25
26
27
28
29
30
31
32
# File 'lib/chicago/database/dataset_builder.rb', line 25

def filter(filters)
  filter_columns = Set.new
  filters.each do |filter|
    filter_columns << filter[:column]
    @dataset = Filter.from_hash(filter).filter_dataset(@dataset)
  end
  add_select_joins_to_dataset(filter_columns)
end

#limit(limit) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



41
42
43
# File 'lib/chicago/database/dataset_builder.rb', line 41

def limit(limit)
  @dataset = @dataset.limit(limit)
end

#order(order) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



34
35
36
37
38
39
# File 'lib/chicago/database/dataset_builder.rb', line 34

def order(order)
  columns_to_order = order.map do |c|
    c[:ascending] ? c[:column].to_sym.asc : c[:column].to_sym.desc
  end
  @dataset = @dataset.order(*columns_to_order)
end

#select(columns) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



17
18
19
20
21
22
23
# File 'lib/chicago/database/dataset_builder.rb', line 17

def select(columns)
  @selected_columns = columns.flatten
  @dataset = @dataset.
    select(*select_names(columns)).
    group(*group_names(columns))
  add_select_joins_to_dataset(columns)
end