Sha256: 54f1d5fe3830d82a153a908d4f72ccad34cda39a1348cddee4ff9c339b94f8ab
Contents?: true
Size: 1.32 KB
Versions: 5
Compression:
Stored size: 1.32 KB
Contents
# frozen_string_literal: true require "json" require 'json-schema' module CouchbaseOrm module JsonSchema class Validator def initialize(json_validation_config) @json_validation_config = json_validation_config end def validate_entity(entity, json) case json_validation_config[:mode] when :strict strict_validation(entity, json) when :logger logger_validation(entity, json) else raise "Unknown validation mode #{json_validation_config[:mode]}" end end private attr_reader :json_validation_config def strict_validation(entity, json) error_results = common_validate(entity, json) raise JsonValidationError.new(Loader.instance.extract_type(entity), error_results) unless error_results.empty? end def logger_validation(entity, json) error_results = common_validate(entity, json) CouchbaseOrm.logger.error { "[COUCHBASEORM]: Invalid document #{Loader.instance.extract_type(entity)} with errors : #{error_results}" } unless error_results.empty? end def common_validate(entity, json) schema = Loader.instance.get_json_schema!(entity, schema_path: json_validation_config[:schema_path]) JSON::Validator.fully_validate(schema, json) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems