Class: ROM::SQL::DSL Private
- Inherits:
- BasicObject
- Defined in:
- lib/rom/sql/dsl.rb
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.
Direct Known Subclasses
Instance Attribute Summary collapse
- #picked_relations ⇒ Object readonly private
- #relations ⇒ Object readonly private
- #schema ⇒ Object readonly private
Instance Method Summary collapse
-
#`(value) ⇒ Sequel::LiteralString
Return a string literal that will be used directly in an ORDER clause.
- #call(&block) ⇒ Object private
-
#exists(relation) ⇒ Object
Returns a result of SQL EXISTS clause.
-
#initialize(schema) ⇒ DSL
constructor
private
A new instance of DSL.
- #respond_to_missing?(name, include_private = false) ⇒ Boolean private
Constructor Details
#initialize(schema) ⇒ DSL
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 DSL.
24 25 26 27 28 |
# File 'lib/rom/sql/dsl.rb', line 24 def initialize(schema) @schema = schema @relations = schema.respond_to?(:relations) ? schema.relations : EMPTY_HASH @picked_relations = ::Concurrent::Map.new end |
Instance Attribute Details
#picked_relations ⇒ 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.
21 22 23 |
# File 'lib/rom/sql/dsl.rb', line 21 def picked_relations @picked_relations end |
#relations ⇒ 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.
17 18 19 |
# File 'lib/rom/sql/dsl.rb', line 17 def relations @relations end |
#schema ⇒ 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.
13 14 15 |
# File 'lib/rom/sql/dsl.rb', line 13 def schema @schema end |
Instance Method Details
#`(value) ⇒ Sequel::LiteralString
Return a string literal that will be used directly in an ORDER clause
54 55 56 |
# File 'lib/rom/sql/dsl.rb', line 54 def `(value) ::Sequel.lit(value) end |
#call(&block) ⇒ 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.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rom/sql/dsl.rb', line 31 def call(&block) arg, kwargs = select_relations(block.parameters) if kwargs.nil? result = instance_exec(arg, &block) else result = instance_exec(**kwargs, &block) end if result.is_a?(::Array) result else [result] end end |
#exists(relation) ⇒ Object
Returns a result of SQL EXISTS clause.
65 66 67 |
# File 'lib/rom/sql/dsl.rb', line 65 def exists(relation) ::ROM::SQL::Attribute[Types::Bool].(sql_expr: relation.dataset.exists) end |
#respond_to_missing?(name, include_private = false) ⇒ 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.
70 71 72 |
# File 'lib/rom/sql/dsl.rb', line 70 def respond_to_missing?(name, include_private = false) super || schema.key?(name) end |