Class: Chicago::Database::DatasetBuilder Private
- Inherits:
-
Object
- Object
- Chicago::Database::DatasetBuilder
- 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
- #dataset ⇒ Object readonly private
Instance Method Summary collapse
- #filter(filters) ⇒ Object private
-
#initialize(db, query) ⇒ DatasetBuilder
constructor
private
A new instance of DatasetBuilder.
- #limit(limit) ⇒ Object private
- #order(order) ⇒ Object private
- #select(columns) ⇒ Object private
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
#dataset ⇒ Object (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 |