Class: Deimos::Generators::SchemaClassGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Deimos::Generators::SchemaClassGenerator
- 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 =
%i(record enum).freeze
- INITIALIZE_WHITESPACE =
"\n#{' ' * 19}"- IGNORE_DEFAULTS =
%w(message_id timestamp).freeze
- SCHEMA_CLASS_FILE =
'schema_class.rb'- SCHEMA_RECORD_PATH =
File.('schema_class/templates/schema_record.rb.tt', __dir__).freeze
- SCHEMA_ENUM_PATH =
File.('schema_class/templates/schema_enum.rb.tt', __dir__).freeze
Instance Method Summary collapse
Instance Method Details
#generate ⇒ void
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 |