Sha256: 09602571b4a5a79cfdeb5b381e75b12e78aa4bc62ec1c65a819f8cc23b2e9fdf

Contents?: true

Size: 1.61 KB

Versions: 6

Compression:

Stored size: 1.61 KB

Contents

require 'avromatic/model/builder'
require 'avromatic/model/message_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

6 entries across 6 versions & 1 rubygems

Version Path
avromatic-0.7.1 lib/avromatic/model.rb
avromatic-0.7.0 lib/avromatic/model.rb
avromatic-0.6.2 lib/avromatic/model.rb
avromatic-0.6.1 lib/avromatic/model.rb
avromatic-0.6.0 lib/avromatic/model.rb
avromatic-0.5.0 lib/avromatic/model.rb