using SQLVision.Core.Enums; using SQLVision.Visualizers.Interfaces; using SQLVision.Visualizers.Visualizers; namespace SQLVision.Visualizers.Factories; public class VisualizerFactory : IVisualizerFactory { private readonly Dictionary _visualizers; private readonly IServiceProvider _serviceProvider; public VisualizerFactory(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; _visualizers = new Dictionary { [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; } }