Class: TapRep::Models::Base

Inherits:
Struct
  • Object
show all
Defined in:
lib/models/base.rb

Overview

rubocop:disable Metrics/BlockLength

Direct Known Subclasses

Session

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#clientObject

Returns the value of attribute client

Returns:

  • (Object)

    the current value of client



7
8
9
# File 'lib/models/base.rb', line 7

def client
  @client
end

#dataObject

Returns the value of attribute data

Returns:

  • (Object)

    the current value of data



7
8
9
# File 'lib/models/base.rb', line 7

def data
  @data
end

Class Method Details

.key_propertyObject



20
21
22
# File 'lib/models/base.rb', line 20

def self.key_property
  :id
end

.pathObject



12
13
14
# File 'lib/models/base.rb', line 12

def self.path
  raise 'Implement #path in a subclass'
end

.schema(&block) ⇒ Object



24
25
26
27
28
# File 'lib/models/base.rb', line 24

def self.schema(&block)
  @schema ||= ::TapRep::Schema.new(stream, key_property)
  @schema.instance_eval(&block) if block_given?
  @schema.to_hash
end

.streamObject



16
17
18
# File 'lib/models/base.rb', line 16

def self.stream
  raise 'Implement #stream in a subclass'
end

.subclassesObject



8
9
10
# File 'lib/models/base.rb', line 8

def self.subclasses
  ObjectSpace.each_object(Class).select { |klass| klass < self }
end

Instance Method Details

#base_recordObject



34
35
36
37
38
39
40
# File 'lib/models/base.rb', line 34

def base_record
  {
    type: 'RECORD',
    stream: self.class.stream,
    record: transform
  }
end

#extra_recordsObject



42
43
44
# File 'lib/models/base.rb', line 42

def extra_records
  []
end

#recordsObject



46
47
48
# File 'lib/models/base.rb', line 46

def records
  [base_record] + extra_records.map(&:records)
end

#transformObject



30
31
32
# File 'lib/models/base.rb', line 30

def transform
  data.dup
end