using System;
using System.Collections;
using System.Data;
using System.Data.Common;
using System.Text;
using System.Threading.Tasks;

namespace EasyDev.Database
{

    /// <summary>
    /// 
    /// </summary>
    /// <seealso cref="System.Data.Common.DbParameter" />
    public class EasyDbParameter : DbParameter
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="EasyDbParameter"/> class.
        /// </summary>
        public EasyDbParameter()
        {
        }
        /// <summary>
        /// Gets or sets the <see cref="T:System.Data.DbType" /> of the parameter.
        /// </summary>
        public override DbType DbType { get; set; }
        /// <summary>
        /// Gets or sets a value that indicates whether the parameter is input-only, output-only, bidirectional, or a stored procedure return value parameter.
        /// </summary>
        public override ParameterDirection Direction { get; set; }
        /// <summary>
        /// Gets or sets a value that indicates whether the parameter accepts null values.
        /// </summary>
        public override bool IsNullable { get; set; }
        /// <summary>
        /// Gets or sets the name of the <see cref="T:System.Data.Common.DbParameter" />.
        /// </summary>
        public override string ParameterName { get; set; }
        /// <summary>
        /// Gets or sets the maximum size, in bytes, of the data within the column.
        /// </summary>
        public override int Size { get; set; }
        /// <summary>
        /// Gets or sets the name of the source column mapped to the <see cref="T:System.Data.DataSet" /> and used for loading or returning the <see cref="P:System.Data.Common.DbParameter.Value" />.
        /// </summary>
        public override string SourceColumn { get; set; }
        /// <summary>
        /// Gets or sets a value which indicates whether the source column is nullable. This allows <see cref="T:System.Data.Common.DbCommandBuilder" /> to correctly generate Update statements for nullable columns.
        /// </summary>
        public override bool SourceColumnNullMapping { get; set; }
        /// <summary>
        /// Gets or sets the value of the parameter.
        /// </summary>
        public override object Value { get; set; }

        /// <summary>
        /// Resets the DbType property to its original settings.
        /// </summary>
        /// <exception cref="ExceptionBuilder.NotImplementedException(string)"></exception>
        public override void ResetDbType()
        {
            throw new NotImplementedException();
        }
    }
}
