class Dato::JsonSchemaRelationships
Attributes
schema[R]
Public Class Methods
new(schema)
click to toggle source
# File lib/dato/json_schema_relationships.rb, line 7 def initialize(schema) @schema = schema end
Public Instance Methods
relationships()
click to toggle source
# File lib/dato/json_schema_relationships.rb, line 11 def relationships return {} if !schema || !schema.properties["data"] entity = if schema.properties["data"].type.first == "array" schema.properties["data"].items else schema.properties["data"] end return {} if !entity || !entity.properties["relationships"] || !entity.properties["relationships"] relationships = entity.properties["relationships"].properties relationships.each_with_object({}) do |(relationship, schema), acc| is_collection = schema.properties["data"].type.first == "array" types = if is_collection [type(schema.properties["data"].items)] elsif schema.properties["data"].type.first == "object" [type(schema.properties["data"])] else schema.properties["data"].any_of.map do |option| type(option) end.compact end acc[relationship.to_sym] = { collection: is_collection, types: types, } end end
type(definition)
click to toggle source
# File lib/dato/json_schema_relationships.rb, line 44 def type(definition) definition.properties["type"].pattern.source.gsub(/(^\^|\$$)/, "") if definition.properties["type"] end