Class: SwaggerDocsRails::OpenapiBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/swagger_docs_rails/openapi_builder.rb

Constant Summary collapse

ID_PARAM =
{
  name: "id", in: "path", required: true,
  schema: { type: "integer", format: "int64" },
  description: "ID do registro"
}.freeze
PAGINATION_PARAMS =
[
  { name: "page",     in: "query", required: false,
    schema: { type: "integer", default: 1 },  description: "Número da página" },
  { name: "per_page", in: "query", required: false,
    schema: { type: "integer", default: 25 }, description: "Itens por página" }
].freeze
RANSACK_PARAM =
{
  name: "q", in: "query", required: false,
  style: "deepObject", explode: true,
  schema: {
    type: "object",
    additionalProperties: { type: "string" },
    example: {
      "nome_cont"        => "joao",
      "email_i_cont"     => "JOAO",
      "cpf_eq"           => "12345678900",
      "created_at_gteq"  => "2024-01-01",
      "created_at_lteq"  => "2024-12-31",
      "ativo_eq"         => "true",
      "s"                => "nome asc"
    }
  },
  description: <<~DESC.strip
  DESC
}.freeze
LOOKUP_TABLE_PATTERN =

Tabelas que são apenas lookups/enums — não expandir como objeto aninhado

/\A(g_tipos_|g_status\z|g_sexos\z|g_regioes\z|
g_paises\z|g_periodos_|g_graus_|g_estados_civis\z)/x.freeze

Instance Method Summary collapse

Constructor Details

#initialize(schema_parser, controller_parser, config = {}) ⇒ OpenapiBuilder

Returns a new instance of OpenapiBuilder.



58
59
60
61
62
63
# File 'lib/swagger_docs_rails/openapi_builder.rb', line 58

def initialize(schema_parser, controller_parser, config = {})
  @schema_parser     = schema_parser
  @controller_parser = controller_parser
  @config            = config
  @dynamic_schemas   = {}
end

Instance Method Details

#buildObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/swagger_docs_rails/openapi_builder.rb', line 65

def build
  paths      = build_paths
  components = build_components
  versions   = detected_versions

  {
    openapi:    "3.0.3",
    info:       build_info(versions),
    servers:    build_servers(versions),
    tags:       build_tags(versions),
    paths:      paths,
    components: components,
    security:   build_global_security
  }
end