Skip to content

Qarma-inspect/jungle-spec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JungleSpec

A library providing simplified and less verbose way of definining OpenApiSpex types.

Example definition:

defmodule Employee do
  use JungleSpec

  open_api_object "Employee", extends: Person, struct?: false do
    property :level, :string, enum: ["L1", "L2", "L3"]
    property :experience, [:number, :string]
    property :is_manager, :boolean, default: false
    property :team_members, {:array, Employee}, nullable: true
    property :technologies_to_experience, {:map, :string}
    additional_properties :integer
  end
end

It creates an OpenApiSpex type with title "Employee" that has all properties from the schema defined in Person module. It also won't create any struct corresponding to the Employee module.

Other properties in the Employee schema:

  • :level - it has type :string and can be one of ["L1", "L2", "L3"]
  • :experience - its type is a union of :number and :string
  • :is_manager - it has type :boolean and is false by default
  • :team_members - its type is an array with employees or nil
  • :technologies_to_experience - its type is an object with additional properties having type :string
  • additional_properties - the schema can have more properties having type :integer

All properties are required and not nullable by default.

Also, the following typespec will be created:

@type t :: %{
  # additional properties
  String.t() => integer(),
  # properties
  level: String.t(),
  experience: number() | String.t(),
  is_manager: boolean(),
  team_members: [t()] | nil,
  technologies_to_experience: %{optional(String.t()) => String.t()},
  ... # and all properties from Person
}

For more information refer to JungleSpec module docs.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages