Class: Lutaml::Store::FormatSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/store/format_serializer.rb

Overview

Bridges a Format handler to the ModelSerializer interface. Enables DatabaseStore to use any format (yaml, json, xml, yamls, marshal) for key-value storage instead of the default hash serialization.

Usage:

serializer = FormatSerializer.new(:yamls)
store = DatabaseStore.new(
  adapter: :sqlite,
  models: [{ model: ConceptDocument, key: :id, serializer: serializer }]
)

Constant Summary collapse

DATA_KEY =
"_data"
CLASS_KEY =
"_class"

Instance Method Summary collapse

Constructor Details

#initialize(format) ⇒ FormatSerializer

Returns a new instance of FormatSerializer.



19
20
21
# File 'lib/lutaml/store/format_serializer.rb', line 19

def initialize(format)
  @format = Format.resolve(format)
end

Instance Method Details

#deserialize(data, model_class) ⇒ Object



30
31
32
33
# File 'lib/lutaml/store/format_serializer.rb', line 30

def deserialize(data, model_class)
  model_class = resolve_class(data[CLASS_KEY]) if data[CLASS_KEY]
  @format.deserialize(data[DATA_KEY], model_class)
end

#serialize(model) ⇒ Object



23
24
25
26
27
28
# File 'lib/lutaml/store/format_serializer.rb', line 23

def serialize(model)
  {
    DATA_KEY => @format.serialize(model),
    CLASS_KEY => model.class.name
  }
end