Class: Deimos::SchemaClass::Record
- Defined in:
- lib/deimos/schema_class/record.rb
Overview
Base Class of Record Classes generated from Avro.
Instance Attribute Summary collapse
- 
  
    
      #tombstone_key  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute tombstone_key. 
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #[](key)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Element access method as if this Object were a hash. 
- 
  
    
      #full_schema  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    Returns the full schema name of the inheriting class. 
- 
  
    
      #merge(other_hash)  ⇒ SchemaClass::Base 
    
    
  
  
  
  
  
  
  
  
  
    Merge a hash or an identical schema object with this one and return a new object. 
- 
  
    
      #namespace  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    Returns the namespace for the schema of the inheriting class. 
- 
  
    
      #schema  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    Returns the schema name of the inheriting class. 
- 
  
    
      #schema_fields  ⇒ Array<String> 
    
    
  
  
  
  
  
  
  
  
  
    An array of fields names in the schema. 
- 
  
    
      #to_h  ⇒ Hash 
    
    
  
  
  
  
  
  
  
  
  
    Converts the object attributes to a hash which can be used for Kafka. 
- 
  
    
      #validator  ⇒ Deimos::SchemaBackends::Base 
    
    
  
  
  
  
  
  
  
  
  
    Returns the schema validator from the schema backend. 
- #with_indifferent_access ⇒ SchemaClass::Record
Methods inherited from Base
#==, #[]=, #as_json, #initialize, #inspect
Constructor Details
This class inherits a constructor from Deimos::SchemaClass::Base
Instance Attribute Details
#tombstone_key ⇒ Object
Returns the value of attribute tombstone_key.
| 11 12 13 | # File 'lib/deimos/schema_class/record.rb', line 11 def tombstone_key @tombstone_key end | 
Class Method Details
.initialize_from_value(value) ⇒ SchemaClass::Record
| 76 77 78 79 80 | # File 'lib/deimos/schema_class/record.rb', line 76 def self.initialize_from_value(value) return nil if value.nil? value.is_a?(self) ? value : self.new(**value.symbolize_keys) end | 
Instance Method Details
#[](key) ⇒ Object
Element access method as if this Object were a hash
| 37 38 39 | # File 'lib/deimos/schema_class/record.rb', line 37 def [](key) self.try(key.to_sym) end | 
#full_schema ⇒ String
Returns the full schema name of the inheriting class.
| 60 61 62 | # File 'lib/deimos/schema_class/record.rb', line 60 def full_schema "#{namespace}.#{schema}" end | 
#merge(other_hash) ⇒ SchemaClass::Base
Merge a hash or an identical schema object with this one and return a new object.
| 26 27 28 29 30 31 32 | # File 'lib/deimos/schema_class/record.rb', line 26 def merge(other_hash) obj = self.class.new(**self.to_h.symbolize_keys) other_hash.to_h.each do |k, v| obj.send("#{k}=", v) end obj end | 
#namespace ⇒ String
Returns the namespace for the schema of the inheriting class.
| 54 55 56 | # File 'lib/deimos/schema_class/record.rb', line 54 def namespace raise NotImplementedError end | 
#schema ⇒ String
Returns the schema name of the inheriting class.
| 48 49 50 | # File 'lib/deimos/schema_class/record.rb', line 48 def schema raise NotImplementedError end | 
#schema_fields ⇒ Array<String>
Returns an array of fields names in the schema.
| 71 72 73 | # File 'lib/deimos/schema_class/record.rb', line 71 def schema_fields validator.schema_fields.map(&:name) end | 
#to_h ⇒ Hash
Converts the object attributes to a hash which can be used for Kafka
| 15 16 17 18 19 20 21 | # File 'lib/deimos/schema_class/record.rb', line 15 def to_h if self.tombstone_key { payload_key: self.tombstone_key&.as_json } else self.as_json end end | 
#validator ⇒ Deimos::SchemaBackends::Base
Returns the schema validator from the schema backend
| 66 67 68 | # File 'lib/deimos/schema_class/record.rb', line 66 def validator Deimos.schema_backend(schema: schema, namespace: namespace) end | 
#with_indifferent_access ⇒ SchemaClass::Record
| 42 43 44 | # File 'lib/deimos/schema_class/record.rb', line 42 def with_indifferent_access self end |