Class: Linkage::ResultSet

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

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ ResultSet

Returns a new instance of ResultSet.



3
4
5
6
7
# File 'lib/linkage/result_set.rb', line 3

def initialize(config)
  @config = config
  @next_group_id = 1
  @next_group_mutex = Mutex.new
end

Instance Method Details

#add_group(group, dataset_id = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/linkage/result_set.rb', line 38

def add_group(group, dataset_id = nil)
  if !@groups_buffer
    groups_headers = [:id] + group.values.keys
    @groups_buffer = ImportBuffer.new(@config.results_uri, :groups, groups_headers, @config.results_uri_options)
  end
  @groups_records_buffer ||= ImportBuffer.new(@config.results_uri, :groups_records, [:group_id, :dataset, :record_id], @config.results_uri_options)

  group_id = next_group_id
  @groups_buffer.add([group_id] + group.values.values)
  group.records.each do |record_id|
    @groups_records_buffer.add([group_id, dataset_id, record_id])
  end
end

#create_tables!Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/linkage/result_set.rb', line 21

def create_tables!
  database do |db|
    schema = @config.groups_table_schema
    db.create_table(:groups) do
      schema.each { |col| column(*col) }
    end

    pk_type = @config.dataset_1.field_set.primary_key.merge(@config.dataset_2.field_set.primary_key).ruby_type
    db.create_table(:groups_records) do
      column(:record_id, pk_type[:type], pk_type[:opts] || {})
      Integer :group_id
      Integer :dataset
      index :group_id
    end
  end
end

#database(&block) ⇒ Object



17
18
19
# File 'lib/linkage/result_set.rb', line 17

def database(&block)
  Sequel.connect(@config.results_uri, @config.results_uri_options, &block)
end

#flush!Object



52
53
54
55
# File 'lib/linkage/result_set.rb', line 52

def flush!
  @groups_buffer.flush if @groups_buffer
  @groups_records_buffer.flush if @groups_records_buffer
end

#groups_datasetObject



9
10
11
# File 'lib/linkage/result_set.rb', line 9

def groups_dataset
  Dataset.new(@config.results_uri, :groups, @config.results_uri_options)
end

#groups_records_datasetObject



13
14
15
# File 'lib/linkage/result_set.rb', line 13

def groups_records_dataset
  Dataset.new(@config.results_uri, :groups_records, @config.results_uri_options)
end