public QueryStringParameterConversionGenerator WithQueryStringParametersForEndpoint()

in src/JetBrains.Space.Generator/CodeGeneration/CSharp/QueryStringParameterConversionGenerator.cs [40:89]


    public QueryStringParameterConversionGenerator WithQueryStringParametersForEndpoint(ApiEndpoint apiEndpoint)
    {
        var requestParametersBuilder = new QueryStringParameterConversionGenerator(TargetNameValueCollectionName, _context);
        var orderedEndpointParameters = apiEndpoint.Parameters.Where(it => !it.Path).ToList();
        foreach (var apiEndpointParameter in orderedEndpointParameters)
        {
            var parameterName = apiEndpointParameter.Field.Name;
            var csharpVariableName = apiEndpointParameter.Field.ToCSharpVariableName();
                
            var parameterValueBuilder = new StringBuilder();
            var parameterConditionBuilder = new StringBuilder();
                
            // Build condition (is it nullable?)
            if (apiEndpointParameter.Field.Type.Nullable && apiEndpointParameter.Field.Type is not ApiFieldType.Enum) // enums can be param="null", don't generate a null check
            {
                parameterConditionBuilder.Append($"{csharpVariableName} != null");
            }
                
            if (apiEndpointParameter.Field.RequiresAddedNullability())
            {
                parameterConditionBuilder.Append($"{csharpVariableName} != null");
            }
                
            // Build value generator
            if (apiEndpointParameter.Field.Type.IsCSharpReferenceType())
            {
                parameterValueBuilder.Append(apiEndpointParameter.Field.ToCSharpVariableInstanceOrDefaultValue(_context));
            }
            else
            {
                parameterValueBuilder.Append(apiEndpointParameter.Field.ToCSharpVariableName());
            }
                
            if (apiEndpointParameter.Field.Type is ApiFieldType.Array arrayType)
            {
                // For arrays, append all element values
                parameterValueBuilder.Append(".Select(it => it" + GenerateParameterTypeConversion(arrayType.ElementType) + ")");
            }
            else
            {
                // For other types, append the value
                parameterValueBuilder.Append(GenerateParameterTypeConversion(apiEndpointParameter.Field.Type));
            }

            requestParametersBuilder = requestParametersBuilder
                .WithQueryStringParameter(parameterName, parameterValueBuilder.ToString(), parameterConditionBuilder.ToString());
        }

        return requestParametersBuilder;
    }