class SchemaExtractor::Field

Constants

TYPES

Attributes

default[R]
name[R]
nullable[R]
type[R]

Public Class Methods

new(name:, type:, nullable:, default: nil) click to toggle source
# File lib/schema_extractor/field.rb, line 23
def initialize(name:, type:, nullable:, default: nil)
  @name = validate_name!(name)
  @type = validate_type!(type)
  @nullable = validate_nullable!(nullable)
  @default = validate_default!(default)
end

Public Instance Methods

nullable?() click to toggle source
# File lib/schema_extractor/field.rb, line 30
def nullable?
  nullable
end

Private Instance Methods

validate_default!(default) click to toggle source
# File lib/schema_extractor/field.rb, line 36
def validate_default!(default)
  default
end
validate_name!(name) click to toggle source
# File lib/schema_extractor/field.rb, line 40
def validate_name!(name)
  return name if name&.instance_of?(String) && !name.empty?
  raise InvalidFieldNameError, "#{name} is invalid field name."
end
validate_nullable!(nullable) click to toggle source
# File lib/schema_extractor/field.rb, line 45
def validate_nullable!(nullable)
  unless [true, false].include?(nullable)
    raise(InvalidNullableValueError, "#{nullable} is invalid for nullable value.")
  end
  nullable
end
validate_type!(type) click to toggle source
# File lib/schema_extractor/field.rb, line 52
def validate_type!(type)
  type = type&.to_sym
  return type if type && TYPES.include?(type)
  raise(InvalidFieldTypeError, "#{type} is invalid field type.")
end