Class: Dbsketch::Model::Database
- Inherits:
-
Object
- Object
- Dbsketch::Model::Database
- Defined in:
- lib/dbsketch/model/database.rb
Instance Attribute Summary collapse
-
#items ⇒ Object
readonly
Returns the value of attribute items.
Instance Method Summary collapse
- #[](item_name) ⇒ Object
- #add(object) ⇒ Object
- #custom_code ⇒ Object
- #get_by_class(given_class) ⇒ Object
- #has_item?(item_name) ⇒ Boolean
- #indexes ⇒ Object
-
#initialize ⇒ Database
constructor
A new instance of Database.
- #operations ⇒ Object
- #order_items! ⇒ Object
- #tables ⇒ Object
- #triggers ⇒ Object
- #views ⇒ Object
Constructor Details
#initialize ⇒ Database
Returns a new instance of Database.
17 18 19 |
# File 'lib/dbsketch/model/database.rb', line 17 def initialize @items = [] end |
Instance Attribute Details
#items ⇒ Object (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
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_code ⇒ Object
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
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 |
#indexes ⇒ Object
42 43 44 |
# File 'lib/dbsketch/model/database.rb', line 42 def indexes get_by_class Index end |
#operations ⇒ Object
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 |
#tables ⇒ Object
50 51 52 |
# File 'lib/dbsketch/model/database.rb', line 50 def tables get_by_class Table end |
#triggers ⇒ Object
54 55 56 |
# File 'lib/dbsketch/model/database.rb', line 54 def triggers get_by_class Trigger end |
#views ⇒ Object
58 59 60 |
# File 'lib/dbsketch/model/database.rb', line 58 def views get_by_class View end |