class PgClosureTreeRebuild::Runner

Public Class Methods

new(db, table, hierarchies = nil, parent_id = 'parent_id', id = 'id') click to toggle source
# File lib/pg_closure_tree_rebuild/runner.rb, line 3
def initialize(db, table, hierarchies = nil, parent_id = 'parent_id', id = 'id')
  @db = db

  hierarchies ||= "#{table.singularize}_hierarchies"
  parent_id ||= 'parent_id'
  id ||= 'id'

  @scope = db[table.to_sym]
  hierarchies = hierarchies.to_sym

  @builder = PgClosureTreeRebuild::Builder.new(
    @scope,
    hierarchies.to_sym,
    id: id.to_sym,
    parent_id: parent_id.to_sym
  )
end

Public Instance Methods

run() click to toggle source
# File lib/pg_closure_tree_rebuild/runner.rb, line 21
def run
  puts 'Calculating chains...'
  bar = ProgressBar.create(total: @builder.chains.size)

  puts "Records: #{@scope.count}"

  puts 'Importing...'
  @builder.rebuild(@db) { bar.increment }
end