private static string Dump(Sql defaultSql) { var sql = defaultSql.Clone(); if (SequelSettings.QueryTemplateEnabled) { sql.ApplyTemplate(); } var text = sql.ToString().Beautify(); var lines = text.Split('\n', '\r').Where(x => !string.IsNullOrWhiteSpace(x)); var builder = new StringBuilder(); builder.AppendLine("Sql {"); builder.AppendLine(" Text {"); foreach (var line in lines) { builder.Append(" "); builder.AppendLine(line); } builder.AppendLine(" }"); builder.AppendLine(" Args {"); foreach (var parameter in sql.ParameterNames) { var value = Commander.CreateSqlCompatibleValue(sql[parameter]); builder.Append(" "); builder.Append(parameter); builder.Append(" := "); builder.AppendLine(value is DBNull ? "(null)" : $"\"{value}\""); } builder.AppendLine(" }"); builder.AppendLine("}"); return(builder.ToString()); }
private static string Dump(Sql defaultSql) { var sql = defaultSql.Clone(); if (SequelSettings.QueryTemplateEnabled) { sql.ApplyTemplate(); } var text = sql.Beautify().ToString(); var lines = text.Split('\n', '\r').Where(x => !string.IsNullOrWhiteSpace(x)); var builder = new StringBuilder(); builder.AppendLine("Sql {"); builder.AppendLine(" Text {"); foreach (var line in lines) { builder.Append(" "); builder.AppendLine(line); } builder.AppendLine(" }"); builder.AppendLine(" Args {"); foreach (var parameter in sql.ParameterNames) { builder.Append(" "); builder.Append(string.IsNullOrEmpty(parameter) ? "{many}" : parameter); builder.Append(" := "); var value = sql[parameter]; var var = value as Var; if (var?.IsRange == true) { builder.AppendLine($"{var.Range}"); } else if (var?.IsArray == true) { var items = var.Array.Cast <object>(); var item = items.FirstOrDefault(); var isMany = item.IsEnumerable(); var isBinary = item is byte; var isEmpty = !items.Any(); if (isEmpty) { builder.AppendLine("null"); } else if (isMany) { builder.AppendLine("{ ... }"); } else if (isBinary) { builder.AppendLine("binary"); } else { value = Commander.CreateSqlCompatibleValue(value); builder.AppendLine($"{{ {value} }}"); } } else { value = Commander.CreateSqlCompatibleValue(value); builder.AppendLine(value is DBNull ? "(null)" : $"\"{value}\""); } } builder.AppendLine(" }"); builder.AppendLine("}"); return(builder.ToString()); }