Class: ROM::SQL::Schema
- Inherits:
 - 
      ROM::Schema
      
        
- Object
 - ROM::Schema
 - ROM::SQL::Schema
 
 
- Defined in:
 - lib/rom/sql/schema.rb,
lib/rom/sql/schema/dsl.rb,
lib/rom/sql/schema/inferrer.rb,
lib/rom/sql/schema/index_dsl.rb,
lib/rom/sql/schema/type_builder.rb,
lib/rom/sql/schema/attributes_inferrer.rb 
Overview
Specialized schema for SQL databases
Defined Under Namespace
Instance Attribute Summary collapse
- 
  
    
      #foreign_keys  ⇒ Array<ForeignKey> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Array with foreign keys.
 - 
  
    
      #indexes  ⇒ Array<Index> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Array with schema indexes.
 
Instance Method Summary collapse
- 
  
    
      #call(relation)  ⇒ Relation 
    
    
  
  
  
  
  
  
  
  
  
    
Create a new relation based on the schema definition.
 - 
  
    
      #empty  ⇒ Schema 
    
    
  
  
  
  
  
  
  
  
  
    
Return an empty schema.
 - 
  
    
      #group(&block)  ⇒ Mixed 
    
    
  
  
  
  
  
  
  
  
  
    
Open Group DSL for setting GROUP BY clause in queries.
 - 
  
    
      #join(other)  ⇒ Schema 
    
    
  
  
  
  
  
  
  
  
  
    
Join with another schema.
 - 
  
    
      #joined  ⇒ Schema 
    
    
  
  
  
  
  
  
  
  
  
    
Return a new schema with all attributes marked as joined.
 - 
  
    
      #order(&block)  ⇒ Mixed 
    
    
  
  
  
  
  
  
  
  
  
    
Open Order DSL for setting ORDER clause in queries.
 - 
  
    
      #project(*names, &block)  ⇒ Schema 
    
    
  
  
  
  
  
  
  
  
  
    
Project a schema.
 - 
  
    
      #qualified(table_alias = nil)  ⇒ Schema 
    
    
  
  
  
  
  
  
  
  
  
    
Return a new schema with attributes marked as qualified.
 - 
  
    
      #restriction(&block)  ⇒ Mixed 
    
    
  
  
  
  
  
  
  
  
  
    
Open restriction DSL for defining query conditions using schema attributes.
 
Instance Attribute Details
#foreign_keys ⇒ Array<ForeignKey> (readonly)
Returns Array with foreign keys.
      26  | 
    
      # File 'lib/rom/sql/schema.rb', line 26 option :foreign_keys, default: -> { EMPTY_SET }  | 
  
#indexes ⇒ Array<Index> (readonly)
Returns Array with schema indexes.
      22  | 
    
      # File 'lib/rom/sql/schema.rb', line 22 option :indexes, default: -> { EMPTY_SET }  | 
  
Instance Method Details
#call(relation) ⇒ Relation
Create a new relation based on the schema definition
      131 132 133  | 
    
      # File 'lib/rom/sql/schema.rb', line 131 def call(relation) relation.new(relation.dataset.select(*self), schema: self) end  | 
  
#empty ⇒ Schema
Return an empty schema
      140 141 142  | 
    
      # File 'lib/rom/sql/schema.rb', line 140 def empty new(EMPTY_ARRAY) end  | 
  
#group(&block) ⇒ Mixed
Open Group DSL for setting GROUP BY clause in queries
      57 58 59  | 
    
      # File 'lib/rom/sql/schema.rb', line 57 def group(&block) GroupDSL.new(self).call(&block) end  | 
  
#join(other) ⇒ Schema
Join with another schema
      111 112 113  | 
    
      # File 'lib/rom/sql/schema.rb', line 111 def join(other) merge(other.joined) end  | 
  
#joined ⇒ Schema
Return a new schema with all attributes marked as joined
      120 121 122  | 
    
      # File 'lib/rom/sql/schema.rb', line 120 def joined new(map(&:joined)) end  | 
  
#order(&block) ⇒ Mixed
Open Order DSL for setting ORDER clause in queries
      46 47 48  | 
    
      # File 'lib/rom/sql/schema.rb', line 46 def order(&block) OrderDSL.new(self).call(&block) end  | 
  
#project(*names, &block) ⇒ Schema
Project a schema
      78 79 80 81 82 83 84  | 
    
      # File 'lib/rom/sql/schema.rb', line 78 def project(*names, &block) if block super(*(names + ProjectionDSL.new(self).(&block))) else super end end  | 
  
#qualified(table_alias = nil) ⇒ Schema
Return a new schema with attributes marked as qualified
      66 67 68  | 
    
      # File 'lib/rom/sql/schema.rb', line 66 def qualified(table_alias = nil) new(map { |attr| attr.qualified(table_alias) }) end  | 
  
#restriction(&block) ⇒ Mixed
Open restriction DSL for defining query conditions using schema attributes
      35 36 37  | 
    
      # File 'lib/rom/sql/schema.rb', line 35 def restriction(&block) RestrictionDSL.new(self).call(&block) end  |