Sha256: c79f2c233b047ae65aceda8db45996b26de80f1f1ba87772394f17416d809945

Contents?: true

Size: 1.77 KB

Versions: 23

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

require 'avromatic/model/builder'
require 'avromatic/model/coercion_error'
require 'avromatic/model/message_decoder'
require 'avromatic/model/custom_type_registry'
require 'avromatic/model/validation_error'
require 'avromatic/model/unknown_attribute_error'

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

23 entries across 23 versions & 1 rubygems

Version Path
avromatic-2.1.0 lib/avromatic/model.rb
avromatic-2.0.1 lib/avromatic/model.rb
avromatic-2.0.0 lib/avromatic/model.rb