Class: RDBr::Metadata::Database
- Inherits:
-
Data
- Object
- Data
- RDBr::Metadata::Database
- Includes:
- Relationships
- Defined in:
- lib/rdbr/metadata/database.rb
Constant Summary
Constants included from RelationshipInference
RelationshipInference::INTEGER_TYPES
Instance Attribute Summary collapse
-
#adapter ⇒ Object
readonly
Returns the value of attribute adapter.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#namespaces ⇒ Object
readonly
Returns the value of attribute namespaces.
Instance Method Summary collapse
-
#initialize(name:, namespaces: [], adapter: nil) ⇒ Database
constructor
A new instance of Database.
- #namespace(name) ⇒ Object
- #relation(name, namespace: nil) ⇒ Object
- #relations ⇒ Object
Methods included from Relationships
#incoming_relationships, #outgoing_relationships, #through_relationships
Constructor Details
#initialize(name:, namespaces: [], adapter: nil) ⇒ Database
Returns a new instance of Database.
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/rdbr/metadata/database.rb', line 6 def initialize(name:, namespaces: [], adapter: nil) database_namespaces = Values.collection(namespaces, member: Namespace, field: 'namespaces') Values.unique_names!(database_namespaces, field: 'namespaces') @relationship_candidates = build_relationship_candidates(database_namespaces).freeze super( name: Values.name(name, field: 'database name'), adapter: Values.deep_copy_freeze(adapter), namespaces: database_namespaces ) end |
Instance Attribute Details
#adapter ⇒ Object (readonly)
Returns the value of attribute adapter
3 4 5 |
# File 'lib/rdbr/metadata/database.rb', line 3 def adapter @adapter end |
#name ⇒ Object (readonly)
Returns the value of attribute name
3 4 5 |
# File 'lib/rdbr/metadata/database.rb', line 3 def name @name end |
#namespaces ⇒ Object (readonly)
Returns the value of attribute namespaces
3 4 5 |
# File 'lib/rdbr/metadata/database.rb', line 3 def namespaces @namespaces end |
Instance Method Details
#namespace(name) ⇒ Object
17 18 19 |
# File 'lib/rdbr/metadata/database.rb', line 17 def namespace(name) namespaces.find{|namespace| namespace.name == name.to_s } end |
#relation(name, namespace: nil) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/rdbr/metadata/database.rb', line 25 def relation(name, namespace: nil) return self.namespace(namespace)&.relation(name) if namespace matches = relations.select{|relation| relation.name == name.to_s } raise InvalidMetadataError, "relation #{name.inspect} is ambiguous; specify a namespace" if matches.length > 1 matches.first end |
#relations ⇒ Object
21 22 23 |
# File 'lib/rdbr/metadata/database.rb', line 21 def relations namespaces.flat_map(&:relations).freeze end |