Class: Deimos::Generators::SchemaClassGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/deimos/schema_class_generator.rb

Overview

Generator for Schema Classes used for the IDE and consumer/producer interfaces

Constant Summary collapse

SPECIAL_TYPES =

Returns:

  • (Array<Symbol>)
%i(record enum).freeze
INITIALIZE_WHITESPACE =

Returns:

  • (String)
"\n#{' ' * 19}"
IGNORE_DEFAULTS =

Returns:

  • (Array<String>)
%w(message_id timestamp).freeze
SCHEMA_CLASS_FILE =

Returns:

  • (String)
'schema_class.rb'
SCHEMA_RECORD_PATH =

Returns:

  • (String)
File.expand_path('schema_class/templates/schema_record.rb.tt', __dir__).freeze
SCHEMA_ENUM_PATH =

Returns:

  • (String)
File.expand_path('schema_class/templates/schema_enum.rb.tt', __dir__).freeze

Instance Method Summary collapse

Instance Method Details

#generatevoid

This method returns an undefined value.



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/generators/deimos/schema_class_generator.rb', line 168

def generate
  _validate
  Rails.logger.info("Generating schemas from Deimos.config to #{Deimos.config.schema.generated_class_path}")
  found_schemas = {}
  Deimos.karafka_configs.each do |config|
    schema_name = config.schema
    next if schema_name.nil?

    namespace = config.namespace || Deimos.config.producers.schema_namespace
    key_schema_name = config.key_config[:schema]

    # don't regenerate if the schema was already found and had a payload key
    next if found_schemas["#{namespace}.#{schema_name}"].present?

    found_schemas["#{namespace}.#{schema_name}"] = key_schema_name
    found_schemas["#{namespace}.#{key_schema_name}"] = nil
    generate_classes(schema_name, namespace, config.key_config, backend: config.schema_backend)
  end

  generate_from_schema_files(found_schemas.keys)

end