namespace ZB.MOM.WW.ScadaBridge.Commons.Entities.Scripts;

public class SharedScript
{
    /// <summary>Primary key.</summary>
    public int Id { get; set; }
    /// <summary>Unique script name used to reference this script from templates.</summary>
    public string Name { get; set; }
    /// <summary>C# script source code.</summary>
    public string Code { get; set; }
    /// <summary>JSON-serialized parameter definitions, or null when the script takes no parameters.</summary>
    public string? ParameterDefinitions { get; set; }
    /// <summary>JSON-serialized return type definition, or null when the script has no return value.</summary>
    public string? ReturnDefinition { get; set; }

    /// <summary>
    /// Initializes a new shared script with the required name and code.
    /// </summary>
    /// <param name="name">Unique script name.</param>
    /// <param name="code">C# script source code.</param>
    public SharedScript(string name, string code)
    {
        Name = name ?? throw new ArgumentNullException(nameof(name));
        Code = code ?? throw new ArgumentNullException(nameof(code));
    }
}
