Module: Typelizer::OpenAPI
- Defined in:
- lib/typelizer/openapi.rb
Constant Summary collapse
- SUPPORTED_VERSIONS =
["3.0", "3.1"].freeze
- OPENAPI_TYPES =
%i[integer number string boolean object array null].freeze
- TS_OBJECT_TYPES =
%w[any unknown never Record Partial Pick Omit].freeze
- COLUMN_TYPE_MAP =
{ integer: {type: :integer}, bigint: {type: :integer, format: :int64}, decimal: {type: :number, format: :double}, float: {type: :number, format: :float}, boolean: {type: :boolean}, string: {type: :string}, text: {type: :string}, citext: {type: :string}, uuid: {type: :string, format: :uuid}, date: {type: :string, format: :date}, datetime: {type: :string, format: :"date-time"}, time: {type: :string, format: :time}, json: {type: :object}, jsonb: {type: :object}, binary: {type: :string, format: :binary}, inet: {type: :string}, cidr: {type: :string} }.freeze
Class Method Summary collapse
- .property_schema(property, openapi_version: "3.0", type_mapping: Typelizer.configuration.type_mapping) ⇒ Object
- .schema_for(interface, openapi_version: "3.0") ⇒ Object
Class Method Details
.property_schema(property, openapi_version: "3.0", type_mapping: Typelizer.configuration.type_mapping) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/typelizer/openapi.rb', line 44 def property_schema(property, openapi_version: "3.0", type_mapping: Typelizer.configuration.type_mapping) if property.type.is_a?(Array) return union_schema(property, openapi_version: openapi_version) end definition = base_type(property, openapi_version: openapi_version, type_mapping: type_mapping) ref = definition.delete("$ref") definition = if ref ref_schema(ref, property, openapi_version: openapi_version) else inline_schema(definition, property, openapi_version: openapi_version) end definition = wrap_traits(definition, property, openapi_version: openapi_version) wrap_multi(definition, property, openapi_version: openapi_version) end |
.schema_for(interface, openapi_version: "3.0") ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/typelizer/openapi.rb', line 31 def schema_for(interface, openapi_version: "3.0") validate_version!(openapi_version) type_mapping = interface.respond_to?(:config) ? interface.config.type_mapping : Typelizer.configuration.type_mapping required_props = interface.properties.reject(&:optional).map(&:name) schema = { type: :object, properties: interface.properties.to_h { |prop| [prop.name, property_schema(prop, openapi_version: openapi_version, type_mapping: type_mapping)] } } schema[:required] = required_props if required_props.any? schema end |