class Amber::Schema::Definition

Direct Known Subclasses

Defined in:

amber/schema/definition.cr

Constructors

Class Method Summary

Macro Summary

Instance Method Summary

Constructor Detail

def self.new(raw_data : Hash(String, JSON::Any)) #

[View source]

Class Method Detail

def self.conditionals : Array(ConditionalGroup) #

Get all conditionals for introspection


[View source]
def self.field_names : Array(String) #

[View source]
def self.has_conditionals? : Bool #

Check if schema has conditionals


[View source]
def self.has_field?(name : String) : Bool #

Class methods for introspection


[View source]
def self.required_field_names : Array(String) #

[View source]
def self.uses_body_params? : Bool #

[View source]
def self.uses_header_params? : Bool #

[View source]
def self.uses_path_params? : Bool #

[View source]
def self.uses_query_params? : Bool #

[View source]

Macro Detail

macro content_type(*types) #

Define supported content types


[View source]
macro field(name, type, **options) #

Define a field in the schema


[View source]
macro from_body #

[View source]
macro from_header #

[View source]
macro from_path #

[View source]
macro from_query #

Parameter source blocks


[View source]
macro nested(name, schema_class) #

Define a nested schema field


[View source]
macro requires_one_of(*fields) #

Helper macro for requiring exactly one of a set of fields


[View source]
macro requires_together(*fields) #

Helper macro for defining multiple fields that must be present together


[View source]
macro validate(method_name = nil, &block) #

Add a custom validator


[View source]
macro validates_to(success_type, failure_type = ValidationError) #

Define success and failure types


[View source]
macro when_field(field, value) #

Define conditional field requirements


[View source]
macro when_present(field) #

Define fields that must be present together


[View source]

Instance Method Detail

def errors : Array(Amber::Schema::Error) #

[View source]
def parse : LegacyResult #

Parse incoming data and return a result


[View source]
def raw_data : Hash(String, JSON::Any) #

Instance variables


[View source]
def to_h : Hash(String, JSON::Any) #

Convert validated data to hash


[View source]
def validate : LegacyResult #

Main validation method - returns legacy Result for backward compatibility


[View source]
def validate_typed : Success(Hash(String, JSON::Any)) | Failure(Hash(String, JSON::Any)) #

New validation method that returns typed Result


[View source]