Class: Dbsketch::Automation::DatabaseImporter

Inherits:
Object
  • Object
show all
Defined in:
lib/dbsketch/automation/database_importer.rb

Instance Method Summary collapse

Constructor Details

#initialize(db) ⇒ DatabaseImporter

Returns a new instance of DatabaseImporter.

Raises:

  • (ArgumentError)


15
16
17
18
19
20
21
# File 'lib/dbsketch/automation/database_importer.rb', line 15

def initialize db
  ### Preconditions

  raise ArgumentError, "database is not a Dbsketch::Automation::DatabaseProxy" unless db.is_a? DatabaseProxy
  ###

  @db = db
  @table_importer = TableImporter.new @db
end

Instance Method Details

#import(options: {}) ⇒ Object

Raises:

  • (ArgumentError)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/dbsketch/automation/database_importer.rb', line 23

def import options: {}
  options = {
    :index_white_list => [], :index_black_list => [],
    :operation_white_list => [], :operation_black_list => [],
    :table_white_list => [], :table_black_list => [],
    :view_white_list => [], :view_black_list => []
  }.merge options
  options[:index_white_list] = (options[:index_white_list].is_a? Array) ? options[:index_white_list] : [options[:index_white_list]]
  options[:index_black_list] = (options[:index_black_list].is_a? Array) ? options[:index_black_list] : [options[:index_black_list]]
  options[:operation_white_list] = (options[:operation_white_list].is_a? Array) ? options[:operation_white_list] : [options[:operation_white_list]]
  options[:operation_black_list] = (options[:operation_black_list].is_a? Array) ? options[:operation_black_list] : [options[:operation_black_list]]
  options[:table_white_list] = (options[:table_white_list].is_a? Array) ? options[:table_white_list] : [options[:table_white_list]]
  options[:table_black_list] = (options[:table_black_list].is_a? Array) ? options[:table_black_list] : [options[:table_black_list]]
  options[:view_white_list] = (options[:view_white_list].is_a? Array) ? options[:view_white_list] : [options[:view_white_list]]
  options[:view_black_list] = (options[:view_black_list].is_a? Array) ? options[:view_black_list] : [options[:view_black_list]]
  ### Preconditions

  raise ArgumentError, "options[:operation_white_list] and options[:operation_black_list] are exclusive." if not options[:operation_white_list].empty? and not options[:operation_black_list].empty?
  raise ArgumentError, "options[:table_white_list] and options[:table_black_list] are exclusive." if not options[:table_white_list].empty? and not options[:table_black_list].empty?
  raise ArgumentError, "options[:view_white_list] and options[:view_black_list] are exclusive." if not options[:view_white_list].empty? and not options[:view_black_list].empty?
  ###


  imported_database = Dbsketch::Model::Database.new

  @db.fetch("select * from sys.tables").all.each do |db_table|
    if (options[:table_white_list].empty? or name_included_in_list? db_table[:name], options[:table_white_list]) and not name_included_in_list? db_table[:name], options[:table_black_list]
      table = import_table(db_table[:name])
      imported_database.add table
      import_indexes imported_database, table, db_table, options
      import_triggers imported_database, table, db_table
    end
  end

  imported_database.tables.each do |table|
    import_foreign_keys imported_database, table
  end

  import_views imported_database, options

  import_functions imported_database, options
  import_procedures imported_database, options

  imported_database
end

#import_table(table_name) ⇒ Object



67
68
69
# File 'lib/dbsketch/automation/database_importer.rb', line 67

def import_table table_name
  @table_importer.import table_name
end