Class: ViewModel::Schemas

Inherits:
Object
  • Object
show all
Defined in:
lib/view_model/schemas.rb

Constant Summary collapse

ID_SCHEMA =
{ 'oneOf' => [{ 'type' => 'integer' },
{ 'type' => 'string', 'format' => 'uuid' },] }.freeze
ID =
JsonSchema.parse!(ID_SCHEMA)
VIEWMODEL_UPDATE_SCHEMA =
{
  'type'        => 'object',
  'description' => 'viewmodel update',
  'properties'  => { ViewModel::TYPE_ATTRIBUTE    => { 'type' => 'string' },
                     ViewModel::ID_ATTRIBUTE      => ID_SCHEMA,
                     ViewModel::NEW_ATTRIBUTE     => { 'type' => 'boolean' },
                     ViewModel::VERSION_ATTRIBUTE => { 'type' => 'integer' } },
  'required'    => [ViewModel::TYPE_ATTRIBUTE],
}.freeze
VIEWMODEL_UPDATE =
JsonSchema.parse!(VIEWMODEL_UPDATE_SCHEMA)
VIEWMODEL_REFERENCE_SCHEMA =
{
  'type'                 => 'object',
  'description'          => 'viewmodel shared reference',
  'properties'           => { ViewModel::REFERENCE_ATTRIBUTE => { 'type' => 'string' } },
  'additionalProperties' => false,
  'required'             => [ViewModel::REFERENCE_ATTRIBUTE],
}.freeze
VIEWMODEL_REFERENCE =
JsonSchema.parse!(VIEWMODEL_REFERENCE_SCHEMA)

Class Method Summary collapse

Class Method Details

.verify_schema!(schema, value) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/view_model/schemas.rb', line 42

def self.verify_schema!(schema, value)
  valid, errors = schema.validate(value)
  unless valid
    error_list = errors.map { |e| "#{e.pointer}: #{e.message}" }.join("\n")
    errors     = 'Error'.pluralize(errors.length)
    raise ViewModel::DeserializationError::InvalidSyntax.new("#{errors} parsing #{schema.description}:\n#{error_list}")
  end
end