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 |