Files
SQLVision/SQLVision.Visualizers/Factories/VisualizerFactory.cs
2026-01-05 00:37:54 +03:00

40 lines
1.3 KiB
C#

using SQLVision.Core.Enums;
using SQLVision.Visualizers.Interfaces;
using SQLVision.Visualizers.Visualizers;
namespace SQLVision.Visualizers.Factories;
public class VisualizerFactory : IVisualizerFactory
{
private readonly Dictionary<OutputType, IVisualizer> _visualizers;
private readonly IServiceProvider _serviceProvider;
public VisualizerFactory(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
_visualizers = new Dictionary<OutputType, IVisualizer>
{
[OutputType.Table] = new TableVisualizer(),
[OutputType.Chart] = new ChartVisualizer(),
[OutputType.Text] = new TextVisualizer(),
[OutputType.Grid] = new TableVisualizer(), // Пока используем TableVisualizer
[OutputType.Custom] = new TableVisualizer() // Fallback
};
}
public IVisualizer GetVisualizer(OutputType type)
{
if (_visualizers.TryGetValue(type, out var visualizer))
{
return visualizer;
}
// Fallback на табличный визуализатор
return _visualizers[OutputType.Table];
}
public void RegisterVisualizer(OutputType type, IVisualizer visualizer)
{
_visualizers[type] = visualizer;
}
}