/
krasninja
/
querycat
Обзор
Документация
Войти
/
krasninja
/
querycat
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/QueryCat.Cli/Commands/ExplainCommand.cs
38 строк
1 KB
Ivan Kozhin
Add events on variables resolve, refactor objects expressions
17 апр 2024, 15:12
17 апр 2024, 15:12
2d53589
Код
Авторство
О чём код?
using System.CommandLine; using QueryCat.Backend.Core.Data; using QueryCat.Backend.Core.Types; using QueryCat.Cli.Commands.Options; namespace QueryCat.Cli.Commands; internal class ExplainCommand : BaseQueryCommand { /// <inheritdoc /> public ExplainCommand() : base("explain", "Show query plan for debugging.") { this.SetHandler((applicationOptions, query, variables, files) => { applicationOptions.InitializeLogger(); var root = applicationOptions.CreateStdoutApplicationRoot(); root.Thread.StatementExecuted += (_, args) => { var result = root.Thread.LastResult; if (result.GetInternalType() == DataType.Object && result.AsObject is IRowsIterator rowsIterator) { var stringBuilder = new IndentedStringBuilder(); rowsIterator.Explain(stringBuilder); Console.WriteLine(stringBuilder); args.ContinueExecution = false; } }; AddVariables(root.Thread, variables); RunQuery(root.Thread, query, files, root.CancellationTokenSource.Token); }, new ApplicationOptionsBinder(LogLevelOption, PluginDirectoriesOption), QueryArgument, VariablesOption, FilesOption); } }