Class: CsvRecord::Query

Inherits:
Object show all
Includes:
Enumerable
Defined in:
lib/csv_record/csv_queries/query.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, conditions) ⇒ Query

Returns a new instance of Query.



8
9
10
11
12
13
14
# File 'lib/csv_record/csv_queries/query.rb', line 8

def initialize(klass, conditions)
  @klass = klass

  @conditions = conditions.map do |condition|
    CsvRecord::Condition.new *condition
  end
end

Instance Attribute Details

#conditionsObject (readonly)

Returns the value of attribute conditions.



6
7
8
# File 'lib/csv_record/csv_queries/query.rb', line 6

def conditions
  @conditions
end

#klassObject (readonly)

Returns the value of attribute klass.



6
7
8
# File 'lib/csv_record/csv_queries/query.rb', line 6

def klass
  @klass
end

Instance Method Details

#__to_a__Object Also known as: to_a



33
34
35
# File 'lib/csv_record/csv_queries/query.rb', line 33

def __to_a__
  trigger
end

#__trigger__Object Also known as: trigger



22
23
24
25
26
27
# File 'lib/csv_record/csv_queries/query.rb', line 22

def __trigger__
  klass.open_database_file do |csv|
    rows = search_for csv, self.conditions
    rows.map { |row| klass.build row.to_hash }
  end
end

#__where__(params) ⇒ Object Also known as: where



16
17
18
19
20
# File 'lib/csv_record/csv_queries/query.rb', line 16

def __where__(params)
  new_conditions = (CsvRecord::Condition.create_from_hashes params)
  @conditions = (@conditions << new_conditions).flatten # figure out a way to solve this later
  self
end

#each(&block) ⇒ Object



41
42
43
# File 'lib/csv_record/csv_queries/query.rb', line 41

def each(&block)
  to_a.each &block
end

#empty?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/csv_record/csv_queries/query.rb', line 45

def empty?
  to_a.empty?
end

#inspectObject



29
30
31
# File 'lib/csv_record/csv_queries/query.rb', line 29

def inspect
  to_a.inspect
end

#lastObject



37
38
39
# File 'lib/csv_record/csv_queries/query.rb', line 37

def last
  to_a.last
end