Class: WolfCore::InstanceApplicationSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/wolf_core/infrastructure/instance_application_serializer.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object: nil, collection: nil, options: nil) ⇒ InstanceApplicationSerializer

Returns a new instance of InstanceApplicationSerializer.



7
8
9
10
11
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 7

def initialize(object: nil, collection: nil, options: nil)
  @object = object
  @collection = collection
  @options = options || {}
end

Instance Attribute Details

#objectObject (readonly)

Returns the value of attribute object.



5
6
7
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 5

def object
  @object
end

#optionsObject (readonly)

Returns the value of attribute options.



5
6
7
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 5

def options
  @options
end

Class Method Details

._attributesObject



25
26
27
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 25

def self._attributes
  @_attributes ||= []
end

._relationshipsObject



29
30
31
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 29

def self._relationships
  @_relationships ||= {}
end

.attributes(*attrs) ⇒ Object



13
14
15
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 13

def self.attributes(*attrs)
  _attributes.concat(attrs.map(&:to_sym)).uniq!
end

.has_many(relationship, serializer:) ⇒ Object

rubocop:disable Naming/PredicateName



17
18
19
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 17

def self.has_many(relationship, serializer:) # rubocop:disable Naming/PredicateName
  _relationships[relationship.to_sym] = serializer
end

.has_one(relationship, serializer:) ⇒ Object

rubocop:disable Naming/PredicateName



21
22
23
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 21

def self.has_one(relationship, serializer:) # rubocop:disable Naming/PredicateName
  _relationships[relationship.to_sym] = serializer
end

Instance Method Details

#serialize(object: nil, options: nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 49

def serialize(object: nil, options: nil)
  Result.try do
    @object = object if object
    options ||= {}
    @options = @options.merge(options)

    serialized_object = as_json(object: @object).with_indifferent_access
    Result.success(data: { serialized_object: serialized_object })
  end
end

#serialize_all(collection: nil, options: nil) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/wolf_core/infrastructure/instance_application_serializer.rb', line 33

def serialize_all(collection: nil, options: nil)
  Result.try do
    @collection = collection if collection

    options ||= {}
    @options = @options.merge(options)

    results = @collection.map do |item|
      result = serialize(object: item, options: @options)
      result.raise_error
      result
    end
    Result.success(data: { serialized_collection: results.map { |result| result.data.serialized_object } })
  end
end