Sha256: c0462c161a2396faca8809413abb9b49892004fe43b097a8d50e332ebaa9e596

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

require 'avromatic/model/builder'
require 'avromatic/model/decoder'
require 'avromatic/model/type_registry'

module Avromatic
  module Model

    # Returns a module that can be included in a class to define a model
    # based on Avro schema(s).
    #
    # Example:
    #   class MyTopic
    #     include Avromatic::Model.build(schema_name: :topic_value,
    #                                      key_schema_name: :topic_key)
    #   end
    #
    # Either schema(_name) or value_schema(_name) must be specified.
    #
    # value_schema(_name) is handled identically to schema(_name) and is
    # treated like an alias for use when both a value and a key schema are
    # specified.
    #
    # Options:
    #   value_schema_name:
    #     The full name of an Avro schema. The schema will be loaded
    #     using the schema store.
    #   value_schema:
    #     An Avro::Schema.
    #   schema_name:
    #     The full name of an Avro schema. The schema will be loaded
    #     using the schema store.
    #   schema:
    #     An Avro::Schema.
    #   key_schema_name:
    #     The full name of an Avro schema for the key. When an instance of
    #     the model is encoded, this schema will be used to encode the key.
    #     The schema will be loaded using the schema store.
    #   key_schema:
    #     An Avro::Schema for the key.
    def self.build(**options)
      Builder.new(**options).mod
    end

    # Returns an anonymous class, that can be assigned to a constant,
    # defined based on Avro schema(s). See Avromatic::Model.build.
    def self.model(**options)
      Builder.model(**options)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
avromatic-0.4.0 lib/avromatic/model.rb