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