Sha256: c74f463ffd4ab2b08615230bfc609ad0b77994d43aba65c6b0a72adcf38f8878

Contents?: true

Size: 820 Bytes

Versions: 2

Compression:

Stored size: 820 Bytes

Contents

require 'avro_turf'
require 'avro_turf/schema_registry'

AvroTurf::SchemaRegistry.class_eval do
  # Override register to first check if a schema is registered by fingerprint
  def register(subject, schema)
    schema_object = if schema.is_a?(String)
                      Avro::Schema.parse(schema)
                    else
                      schema
                    end

    registered = false
    data = begin
             get("/subjects/#{subject}/fingerprints/#{schema_object.sha256_fingerprint.to_s(16)}")
           rescue
             registered = true
             post("/subjects/#{subject}/versions", body: { schema: schema.to_s }.to_json)
           end

    id = data.fetch('id')

    @logger.info("#{registered ? 'Registered' : 'Found'} schema for subject `#{subject}`; id = #{id}")

    id
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
avromatic-0.15.0 lib/avromatic/schema_registry_patch.rb
avromatic-0.15.0.rc0 lib/avromatic/schema_registry_patch.rb