public (string queryString, IDictionary <string, object> parameters) Serialize(IParameterCache parameterCache) { var builder = new StringBuilder(); var dict = new Dictionary <string, object>(); builder.Append(this._name); builder.Append("("); for (var i = 0; i < this._arguments.Length; i++) { var parameter = this._arguments[i]; if (i != 0) { builder.Append(", "); } if (parameter is IGremlinSerializable serializable) { builder.Append(serializable.Serialize(parameterCache).queryString); } else { var parameterName = parameterCache.Cache(parameter); dict[parameterName] = parameter; builder.Append(parameterName); } } builder.Append(")"); return(builder.ToString(), dict); }
public (string queryString, IDictionary <string, object> parameters) Serialize(IParameterCache parameterCache) { var parameters = new Dictionary <string, object>(); var builder = new StringBuilder(); var appendComma = false; builder.Append(this.Name); builder.Append("("); foreach (var parameter in this.Parameters) { if (appendComma) { builder.Append(", "); } else { appendComma = true; } if (parameter is IGremlinSerializable serializable) { var(innerQueryString, innerParameters) = serializable.Serialize(parameterCache); builder.Append(innerQueryString); foreach (var kvp in innerParameters) { parameters[kvp.Key] = kvp.Value; } } else { var newParameterName = parameterCache.Cache(parameter); parameters[newParameterName] = parameter; builder.Append(newParameterName); } } builder.Append(")"); return(builder.ToString(), parameters); }