Adds SQL UIHints handler and provider.

This commit is contained in:
Matthew Knibbs 2025-01-01 16:46:23 +00:00
parent 97a0b36122
commit f609013a79
4 changed files with 30 additions and 0 deletions

View file

@ -23,6 +23,7 @@ using Elsa.Workflows.Services;
using Elsa.Workflows.UIHints.CheckList;
using Elsa.Workflows.UIHints.Dropdown;
using Elsa.Workflows.UIHints.JsonEditor;
using Elsa.Workflows.UIHints.SqlEditor;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Workflows.Features;
@ -229,11 +230,13 @@ public class WorkflowsFeature : FeatureBase
.AddScoped<IUIHintHandler, DropDownUIHintHandler>()
.AddScoped<IUIHintHandler, CheckListUIHintHandler>()
.AddScoped<IUIHintHandler, JsonEditorUIHintHandler>()
.AddScoped<IUIHintHandler, SqlEditorUIHintHandler>()
// UI property handlers.
.AddScoped<IPropertyUIHandler, StaticCheckListOptionsProvider>()
.AddScoped<IPropertyUIHandler, StaticDropDownOptionsProvider>()
.AddScoped<IPropertyUIHandler, JsonCodeOptionsProvider>()
.AddScoped<IPropertyUIHandler, SqlCodeOptionsProvider>()
// Logger state generators.
.AddSingleton(WorkflowLoggerStateGenerator)

View file

@ -21,5 +21,6 @@ public static class InputUIHints
public const string OutputPicker = "output-picker";
public const string OutcomePicker = "outcome-picker";
public const string JsonEditor = "json-editor";
public const string SqlEditor = "sql-editor";
public const string DynamicOutcomes = "dynamic-outcomes";
}

View file

@ -0,0 +1,10 @@
using System.Reflection;
using Elsa.Workflows.UIHints.CodeEditor;
// ReSharper disable once CheckNamespace
namespace Elsa.Workflows.UIHints.SqlEditor;
internal class SqlCodeOptionsProvider : CodeEditorOptionsProviderBase
{
protected override string GetLanguage(PropertyInfo propertyInfo, object? context) => "sql";
}

View file

@ -0,0 +1,16 @@
using System.Reflection;
namespace Elsa.Workflows.UIHints.SqlEditor;
/// <inheritdoc />
public class SqlEditorUIHintHandler : IUIHintHandler
{
/// <inheritdoc />
public string UIHint => InputUIHints.SqlEditor;
/// <inheritdoc />
public ValueTask<IEnumerable<Type>> GetPropertyUIHandlersAsync(PropertyInfo propertyInfo, CancellationToken cancellationToken)
{
return new([typeof(SqlCodeOptionsProvider)]);
}
}