Class: ROM::Relation::Name Private
- Inherits:
-
Object
- Object
- ROM::Relation::Name
- Defined in:
- lib/rom/relation/name.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Relation name container
This is a simple struct with two fields. It handles both relation registration name (i.e. Symbol) and dataset name. The reason we need it is a simplification of passing around these two objects. It is quite common to have a dataset named differently from a relation built on top if you are dealing with a legacy DB and often you need both to support things such as associations (rom-sql as an example).
Instance Attribute Summary collapse
- #aliaz ⇒ Object readonly private
-
#dataset ⇒ Symbol
readonly
private
Underlying dataset name.
- #key ⇒ Object readonly private
-
#relation ⇒ Symbol
readonly
private
Relation registration name.
Class Method Summary collapse
-
.[](*args) ⇒ ROM::Relation::Name
private
Coerce an object to a Name instance.
- .cache ⇒ Object private
Instance Method Summary collapse
- #aliased? ⇒ Boolean private
- #as(aliaz) ⇒ Object private
-
#initialize(relation, dataset = relation, aliaz = nil) ⇒ Name
constructor
private
A new instance of Name.
-
#inspect ⇒ String
private
Return inspected relation.
-
#to_s ⇒ String
private
Return relation name.
-
#to_sym ⇒ Symbol
private
Alias for registration key implicitly called by ROM::Registry.
Constructor Details
#initialize(relation, dataset = relation, aliaz = nil) ⇒ Name
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Name.
60 61 62 63 64 65 |
# File 'lib/rom/relation/name.rb', line 60 def initialize(relation, dataset = relation, aliaz = nil) @relation = relation @dataset = dataset || relation @key = aliaz || relation @aliaz = aliaz end |
Instance Attribute Details
#aliaz ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
56 57 58 |
# File 'lib/rom/relation/name.rb', line 56 def aliaz @aliaz end |
#dataset ⇒ Symbol (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Underlying dataset name
54 55 56 |
# File 'lib/rom/relation/name.rb', line 54 def dataset @dataset end |
#key ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
57 58 59 |
# File 'lib/rom/relation/name.rb', line 57 def key @key end |
#relation ⇒ Symbol (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Relation registration name
47 48 49 |
# File 'lib/rom/relation/name.rb', line 47 def relation @relation end |
Class Method Details
.[](*args) ⇒ ROM::Relation::Name
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Coerce an object to a Name instance
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rom/relation/name.rb', line 25 def self.[](*args) cache.fetch_or_store(args.hash) do relation, dataset, aliaz = args if relation.is_a?(Name) relation else new(relation, dataset, aliaz) end end end |
.cache ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
38 39 40 |
# File 'lib/rom/relation/name.rb', line 38 def self.cache @cache ||= Concurrent::Map.new end |
Instance Method Details
#aliased? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
71 |
# File 'lib/rom/relation/name.rb', line 71 def aliased? = aliaz && aliaz != relation |
#as(aliaz) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
68 |
# File 'lib/rom/relation/name.rb', line 68 def as(aliaz) = self.class[relation, dataset, aliaz] |
#inspect ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return inspected relation
100 |
# File 'lib/rom/relation/name.rb', line 100 def inspect = "#{self.class.name}(#{self})" |
#to_s ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return relation name
78 79 80 81 82 83 84 85 86 |
# File 'lib/rom/relation/name.rb', line 78 def to_s if aliased? "#{relation} on #{dataset} as #{aliaz}" elsif relation == dataset relation.to_s else "#{relation} on #{dataset}" end end |
#to_sym ⇒ Symbol
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Alias for registration key implicitly called by ROM::Registry
93 |
# File 'lib/rom/relation/name.rb', line 93 def to_sym = relation |