buildContextMethod method

ContextMethod buildContextMethod(
  1. MapEntry<String, ApiMethod> method
)

Converts an ApiMethod schema entry into a ContextMethod.

Params/body/query sections are expanded into nested field trees that can generate request models. The hasUseCase flag is derived from the presence of any params/body/query.

Implementation

ContextMethod buildContextMethod(MapEntry<String, ApiMethod> method) {
  final paramsFields = <NestedContextField>[],
      bodyFields = <NestedContextField>[],
      queryFields = <NestedContextField>[];

  final params = buildContextFields(method.value.params ?? {}, paramsFields);
  final body = buildContextFields(method.value.body ?? {}, bodyFields);
  final query = buildContextFields(method.value.query ?? {}, queryFields);

  if (params.isNotEmpty) {
    paramsFields.add(
      NestedContextField(
        name: method.key.camelCaseToPascalCase(),
        properties: params,
        isRoot: true,
      ),
    );
  }
  if (body.isNotEmpty) {
    bodyFields.add(
      NestedContextField(
        name: method.key.camelCaseToPascalCase(),
        properties: body,
        isRoot: true,
      ),
    );
  }
  if (query.isNotEmpty) {
    queryFields.add(
      NestedContextField(
        name: method.key.camelCaseToPascalCase(),
        properties: query,
        isRoot: true,
      ),
    );
  }

  return ContextMethod(
    methodName: method.key,
    methodNamePascalCase: method.key.camelCaseToPascalCase(),
    params: paramsFields,
    body: bodyFields,
    query: queryFields,
    hasParams: paramsFields.isNotEmpty,
    hasBody: bodyFields.isNotEmpty,
    hasQuery: queryFields.isNotEmpty,
    hasUseCase: paramsFields.isNotEmpty || bodyFields.isNotEmpty || queryFields.isNotEmpty,
  );
}