Backend/e-suite.API/e-suite.Database.Migrator/SqlWrapper/ISqlWrapper.cs
2026-01-20 21:50:10 +00:00

85 lines
2.8 KiB
C#

using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace e_suite.Database.Migrator.SqlWrapper;
public interface ISqlWrapper : IDisposable
{
/// <summary>
/// Name of the stored procedure to call.
/// Note: can use either CommandName or the CommandText, but not both at the same time.
/// </summary>
string CommandName { get; set; }
/// <summary>
/// Adhoc SQL text.
/// Note: can use either CommandName or the CommandText, but not both at the same time.
/// </summary>
string CommandText { get; set; }
void AddParameter(string name, SqlDbType type, object value);
/// <summary>
/// Adds a new parameter to the stored procedure
/// </summary>
/// <param name="name">name of the parameter. For example @test the @ symbol is optional</param>
/// <param name="type">database type of the parameter</param>
/// <param name="direction">Specifies if this is an input or output parameter</param>
/// <param name="value">actual value for the parameter</param>
void AddParameter(string name, SqlDbType type, ParameterDirection direction, object value);
/// <summary>
/// Retrieves the current value of a parameter
/// </summary>
/// <param name="name">name of the parameter that you need the value for</param>
/// <returns>either the value of the named parameter, or null if it does not exist</returns>
object? GetParamValue(string name);
/// <summary>
/// Removes all parameters from the internal parameter list.
/// </summary>
void Clear();
/// <summary>
/// Execute the stored procedure without the expectation of any result sets being returned.
/// note: output parameters will be set when the method completes.
/// </summary>
void Execute();
/// <summary>
/// Retrieves the procedures return value
/// </summary>
/// <returns>the return value from the procedure call</returns>
object? GetReturnValue();
/// <summary>
/// Execute stored procedure with return an XML reader.
/// </summary>
/// <returns></returns>
XmlReader ExecuteXmlReader();
/// <summary>
/// Execute the stored procedure with the result returned as an XmlDocument
/// </summary>
/// <returns>XML document containing the result of the stored procedure call</returns>
XmlDocument ExecuteXmlDocument();
/// <summary>
/// Execute the stored procedure with the result returned as an XDcoument
/// </summary>
/// <returns></returns>
XDocument ExecuteXDocument();
IDataReader ExecuteReader();
bool IsDisposed { get; }
int ParamCount { get; }
/// <summary>
/// Timeout for sql commands. Default is 30 seconds. 0 means no limit.
/// </summary>
int Timeout { get; set; }
}