Current section

Files

Jump to
oaspec src oaspec@internal@codegen@import_analysis.erl
Raw

src/oaspec@internal@codegen@import_analysis.erl

-module(oaspec@internal@codegen@import_analysis).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/internal/codegen/import_analysis.gleam").
-export([operations_need_typed_schemas/1, operations_have_optional_params/1, operations_have_optional_body/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-file("src/oaspec/internal/codegen/import_analysis.gleam", 12).
?DOC(false).
-spec operations_need_typed_schemas(
list({binary(),
oaspec@openapi@spec:operation(oaspec@openapi@spec:resolved()),
binary(),
oaspec@openapi@spec:http_method()})
) -> boolean().
operations_need_typed_schemas(Operations) ->
gleam@list:any(
Operations,
fun(Op) ->
{_, Operation, _, _} = Op,
Has_ref_body = case erlang:element(7, Operation) of
{some, {value, Rb}} ->
gleam@list:any(
maps:to_list(erlang:element(3, Rb)),
fun(Ce) ->
{_, Mt} = Ce,
case erlang:element(2, Mt) of
{some, {reference, _, _}} ->
true;
{some,
{inline, {object_schema, _, _, _, _, _, _}}} ->
true;
{some, {inline, {all_of_schema, _, _}}} ->
true;
_ ->
false
end
end
);
_ ->
false
end,
Has_ref_params = gleam@list:any(
erlang:element(6, Operation),
fun(Ref_p) -> case Ref_p of
{value, P} ->
case erlang:element(6, P) of
{parameter_schema, {reference, _, _}} ->
true;
_ ->
false
end;
_ ->
false
end end
),
Has_ref_body orelse Has_ref_params
end
).
-file("src/oaspec/internal/codegen/import_analysis.gleam", 46).
?DOC(false).
-spec operations_have_optional_params(
list({binary(),
oaspec@openapi@spec:operation(oaspec@openapi@spec:resolved()),
binary(),
oaspec@openapi@spec:http_method()})
) -> boolean().
operations_have_optional_params(Operations) ->
gleam@list:any(
Operations,
fun(Op) ->
{_, Operation, _, _} = Op,
gleam@list:any(
erlang:element(6, Operation),
fun(Ref_p) -> case Ref_p of
{value, P} ->
not erlang:element(5, P);
_ ->
false
end end
)
end
).
-file("src/oaspec/internal/codegen/import_analysis.gleam", 61).
?DOC(false).
-spec operations_have_optional_body(
list({binary(),
oaspec@openapi@spec:operation(oaspec@openapi@spec:resolved()),
binary(),
oaspec@openapi@spec:http_method()})
) -> boolean().
operations_have_optional_body(Operations) ->
gleam@list:any(
Operations,
fun(Op) ->
{_, Operation, _, _} = Op,
case erlang:element(7, Operation) of
{some, {value, Rb}} ->
not erlang:element(4, Rb);
_ ->
false
end
end
).