Module: EasyTalk::Model::ClassMethods

Defined in:
lib/easy_talk/model.rb

Overview

Module containing class-level methods for defining and accessing the schema of a model.

Instance Method Summary collapse

Instance Method Details

#define_schema { ... } ⇒ Object

Define the schema for the model using the provided block.

Yields:

  • The block to define the schema.

Raises:

  • (ArgumentError)

    If the class does not have a name.



115
116
117
118
119
120
121
122
123
# File 'lib/easy_talk/model.rb', line 115

def define_schema(&block)
  raise ArgumentError, 'The class must have a name' unless name.present?

  @schema_definition = SchemaDefinition.new(name)
  @schema_definition.instance_eval(&block)
  attr_accessor(*properties)

  @schema_defintion
end

#function_nameString

Returns the name of the model as a human-readable function name.

Returns:

  • (String)

    The human-readable function name of the model.



92
93
94
# File 'lib/easy_talk/model.rb', line 92

def function_name
  name.humanize.titleize
end

#inherits_schema?Boolean

Returns true if the class inherits a schema.

Returns:

  • (Boolean)

    ‘true` if the class inherits a schema, `false` otherwise.



78
79
80
# File 'lib/easy_talk/model.rb', line 78

def inherits_schema?
  false
end

#json_schemaHash

Returns the JSON schema for the model.

Returns:

  • (Hash)

    The JSON schema for the model.



107
108
109
# File 'lib/easy_talk/model.rb', line 107

def json_schema
  @json_schema ||= schema.as_json
end

#propertiesObject



96
97
98
99
100
101
102
# File 'lib/easy_talk/model.rb', line 96

def properties
  @properties ||= begin
    return unless schema[:properties].present?

    schema[:properties].keys.map(&:to_sym)
  end
end

#ref_templateString

Returns the reference template for the model.

Returns:

  • (String)

    The reference template for the model.



85
86
87
# File 'lib/easy_talk/model.rb', line 85

def ref_template
  "#/$defs/#{name}"
end

#schemaSchema

Returns the schema for the model.

Returns:

  • (Schema)

    The schema for the model.



71
72
73
# File 'lib/easy_talk/model.rb', line 71

def schema
  @schema ||= build_schema(schema_definition)
end

#schema_definitionSchemaDefinition

Returns the unvalidated schema definition for the model.

Returns:



128
129
130
# File 'lib/easy_talk/model.rb', line 128

def schema_definition
  @schema_definition ||= {}
end