Files
discourse/migrations/lib/database/schema/config_validator.rb
Gerhard Schlager 17ba19c7ae REFACTOR: Code generator for migrations IntemerdiateDB
* Splits the existing script into multiple classes
* Adds command for generating IntermediateDB schema (`migrations/bin/cli schema generate`)
* Changes the syntax of the IntermediateDB schema config
* Adds validation for the schema config
* It uses YAML schema aka JSON schema to validate the config file
* It generates the SQL schema file and Ruby classes for storing data in the IntermediateDB
2025-04-07 17:22:36 +02:00

47 lines
946 B
Ruby

# frozen_string_literal: true
module Migrations::Database::Schema
class ConfigValidator
attr_reader :errors
def initialize
@errors = []
end
def validate(config)
@errors.clear
validate_with_json_schema(config)
return self if has_errors?
validate_output_config(config)
validate_schema_config(config)
validate_plugins(config)
self
end
def has_errors?
@errors.any?
end
private
def validate_with_json_schema(config)
Validation::JsonSchemaValidator.new(config, @errors).validate
end
def validate_output_config(config)
Validation::OutputConfigValidator.new(config, @errors).validate
end
def validate_schema_config(config)
Validation::SchemaConfigValidator.new(config, @errors).validate
end
def validate_plugins(config)
Validation::PluginConfigValidator.new(config, @errors).validate
end
end
end