using System;

// ReSharper disable UnusedAutoPropertyAccessor.Global

namespace NodePipeline.Abstractions.Exceptions.NodeFactory;

public class NonNullableInputRestrictsConnectionToNullableOutputException : PipelineException
{
    public NonNullableInputRestrictsConnectionToNullableOutputException(
        string pipelineId, string nodeId, string nodeType, string inputPortName, string outputPortName,
        string outputPortNodeId)
        : base(pipelineId, Constants.Exceptions.NodeFactory.NodeParameterNotFoundException)
    {
        InputPortName = inputPortName ?? throw new ArgumentNullException(nameof(inputPortName));
        NodeType = nodeType ?? throw new ArgumentNullException(nameof(nodeType));
        OutputPortName = outputPortName ?? throw new ArgumentNullException(nameof(outputPortName));
        OutputPortNodeId = outputPortNodeId;
        NodeId = nodeId;
    }

    public string InputPortName { get; }
    public string NodeType { get; }
    public string OutputPortName { get; }
    public string OutputPortNodeId { get; }
    public string NodeId { get; }
}