From 875c726796d2f9cb945e127c77d2ba8e7e888229 Mon Sep 17 00:00:00 2001 From: Fabio Pellegrini Date: Fri, 11 Apr 2025 08:34:02 +0200 Subject: [PATCH] feat: allow to hide fields from documentation --- lib/open_api/open_api.ex | 2 +- test/unit/command/open_api/open_api_test.exs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/open_api/open_api.ex b/lib/open_api/open_api.ex index 14b0c18..2d89e88 100644 --- a/lib/open_api/open_api.ex +++ b/lib/open_api/open_api.ex @@ -22,7 +22,7 @@ defmodule EctoCommand.OpenApi do Enum.reduce(@command_fields, {%{}, []}, fn field, {fields, required} -> {name, type, opts} = field - if opts[:internal] != true do + if opts[:internal] != true and opts[:doc] != false do required = if Enum.member?([true, []], opts[:required]), do: [name | required], else: required fields = Map.put(fields, name, EctoCommand.OpenApi.schema_for(type, opts)) {fields, required} diff --git a/test/unit/command/open_api/open_api_test.exs b/test/unit/command/open_api/open_api_test.exs index 7709773..31dc595 100644 --- a/test/unit/command/open_api/open_api_test.exs +++ b/test/unit/command/open_api/open_api_test.exs @@ -12,6 +12,7 @@ defmodule Unit.EctoCommand.OpenApi.OpenApiTest do command do param :id, :string, doc: Type.uuid() + param :hidden_field, :string, required: true, inclusion: ["a", "b"], doc: false param :numeric_id, :id param :name, :string, required: true, length: [min: 2, max: 255], doc: [example: "Mario"] param :email, :string, required: true, format: ~r/@/, length: [min: 6], doc: Type.email() @@ -158,6 +159,8 @@ defmodule Unit.EctoCommand.OpenApi.OpenApiTest do example: %{a: 1} } } == Sample.schema().properties + + refute Map.has_key?(Sample.schema().properties, :hidden_field) end test "example is generated accordingly to properties" do @@ -188,6 +191,8 @@ defmodule Unit.EctoCommand.OpenApi.OpenApiTest do type_id: "string", uploaded_at: "2023-04-03T10:21:00Z" } == Sample.schema().example + + refute Map.has_key?(Sample.schema().example, :hidden_field) end test "required fields list is generated correctly" do