Class: Dbsketch::Model::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/dbsketch/model/database.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDatabase

Returns a new instance of Database.



17
18
19
# File 'lib/dbsketch/model/database.rb', line 17

def initialize
	@items = []
end

Instance Attribute Details

#itemsObject (readonly)

Returns the value of attribute items.



21
22
23
# File 'lib/dbsketch/model/database.rb', line 21

def items
  @items
end

Instance Method Details

#[](item_name) ⇒ Object

Raises:

  • (ArgumentError)


69
70
71
72
73
74
75
76
# File 'lib/dbsketch/model/database.rb', line 69

def [] item_name
	### Preconditions
	raise ArgumentError, "item_name is not a String" unless item_name.is_a? String
	###
	item = @items.find { |t| t.name.downcase == item_name.downcase }
	raise ModelError, "item #{item_name} not found in database" if nil == item
	item
end

#add(object) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/dbsketch/model/database.rb', line 23

def add object
	objects = object.is_a?(Array) ? object : [object]
	### Preconditions
	objects.each_with_index do |o, index|
		raise ArgumentError, "object n°#{index + 1} is not a Dbsketch::Model::CustomCode, Index, Operation, Table nor View" unless o.is_a? CustomCode or o.is_a? Index or o.is_a? Operation or o.is_a? Table or o.is_a? Trigger or o.is_a? View
		raise ModelError, "object #{o.name} already exists" if nil != (@items.find { |i| i.name.downcase == o.name.downcase })
	end
	###
	@items = @items + objects
end

#custom_codeObject



38
39
40
# File 'lib/dbsketch/model/database.rb', line 38

def custom_code
	get_by_class CustomCode
end

#get_by_class(given_class) ⇒ Object



34
35
36
# File 'lib/dbsketch/model/database.rb', line 34

def get_by_class given_class
	@items.select { |i| i.is_a? given_class }
end

#has_item?(item_name) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


62
63
64
65
66
67
# File 'lib/dbsketch/model/database.rb', line 62

def has_item? item_name
	### Preconditions
	raise ArgumentError, "item_name is not a String" unless item_name.is_a? String
	###
	nil != @items.find { |t| t.name.downcase == item_name.downcase }
end

#indexesObject



42
43
44
# File 'lib/dbsketch/model/database.rb', line 42

def indexes
	get_by_class Index
end

#operationsObject



46
47
48
# File 'lib/dbsketch/model/database.rb', line 46

def operations
	get_by_class Operation
end

#order_items!Object



78
79
80
81
82
# File 'lib/dbsketch/model/database.rb', line 78

def order_items!
	@items.map! { |i| i.reset_order!; i }
	@items.map! { |i| i.compute_order!; i }
	@items.sort! { |a,b| (a.order != b.order) ? (a.order <=> b.order) : (a.name <=> b.name) }
end

#tablesObject



50
51
52
# File 'lib/dbsketch/model/database.rb', line 50

def tables
	get_by_class Table
end

#triggersObject



54
55
56
# File 'lib/dbsketch/model/database.rb', line 54

def triggers
	get_by_class Trigger
end

#viewsObject



58
59
60
# File 'lib/dbsketch/model/database.rb', line 58

def views
	get_by_class View
end