Skip to content

Commit

Permalink
Merge pull request #18 from I-RzR-I/feature/17-10-23-AddNewExtensions
Browse files Browse the repository at this point in the history
Add IDataReader extensions.
  • Loading branch information
I-RzR-I authored Oct 18, 2023
2 parents 3c677be + 61ba268 commit e85dfad
Show file tree
Hide file tree
Showing 14 changed files with 737 additions and 12 deletions.
5 changes: 4 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,7 @@
-> Small code refactor.

### **v.1.0.11.1319**
-> Fix wrong modification.<br />
-> Fix wrong modification.<br />

### **v.1.0.12.1447**
-> Add IDataReader extensions to convert object in specific type.<br />
8 changes: 8 additions & 0 deletions src/DomainCommonExtensions/CommonExtensions/NullExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,13 @@ public static bool IsNotNull(this object obj)
/// <returns></returns>
public static bool IsDbNull(this object obj)
=> obj == DBNull.Value;

/// <summary>
/// Is if source object is NOT DBNull
/// </summary>
/// <param name="obj">Object to be checked</param>
/// <returns></returns>
public static bool IsNotDbNull(this object obj)
=> obj != DBNull.Value;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,27 +70,50 @@ public static T ReadDbReaderOneRow<T>(this DbDataReader reader, T obj)
}

/// <summary>
/// Checks if a column's value is DBNull
/// Checks if a column value is DBNull
/// </summary>
/// <param name="dataReader">The data reader</param>
/// <param name="columnName">The column name</param>
/// <returns>A bool indicating if the column's value is DBNull</returns>
/// <returns>A bool indicating if the column value is DBNull</returns>
public static bool IsDbNull(this IDataReader dataReader, string columnName)
{
return dataReader[columnName] == DBNull.Value;
}

/// <summary>
/// Checks if a column's value is DBNull or is Empty
/// Checks if a column value is not DBNull
/// </summary>
/// <param name="dataReader">The data reader</param>
/// <param name="columnName">The column name</param>
/// <returns>A bool indicating if the column's value is DBNull</returns>
/// <returns>A bool indicating if the column value is not DBNull</returns>
public static bool IsNotDbNull(this IDataReader dataReader, string columnName)
{
return dataReader[columnName] != DBNull.Value;
}

/// <summary>
/// Checks if a column value is DBNull or is Empty
/// </summary>
/// <param name="dataReader">The data reader</param>
/// <param name="columnName">The column name</param>
/// <returns>A bool indicating if the column value is DBNull</returns>
public static bool IsDbNullOrEmpty(this IDataReader dataReader, string columnName)
{
return dataReader[columnName] == DBNull.Value || dataReader[columnName].ToString() == string.Empty;
}

/// <summary>
/// Checks if reader column has value
/// </summary>
/// <param name="dataReader">The data reader</param>
/// <param name="columnName">The column name</param>
/// <returns>A bool indicating if the column's value is DBNull</returns>
public static bool IsWithValue(this IDataReader dataReader, string columnName)
{
return dataReader[columnName].IsNotDbNull() && dataReader[columnName].ToString().IsNotNull()
&& dataReader[columnName].ToString().IsPresent();
}

/// <summary>
/// Checks if a column exists in a data reader
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// ***********************************************************************
// Assembly : RzR.Shared.Extensions.DomainCommonExtensions
// Author : RzR
// Created On : 2023-10-18 09:00
//
// Last Modified By : RzR
// Last Modified On : 2023-10-18 09:05
// ***********************************************************************
// <copyright file="ToBoolExtensions.cs" company="">
// Copyright (c) RzR. All rights reserved.
// </copyright>
//
// <summary>
// </summary>
// ***********************************************************************

#region U S A G E S

using System.Data;
using DomainCommonExtensions.CommonExtensions.SystemData;

#endregion

namespace DomainCommonExtensions.ConvertExtensions.DataReader
{
/// <summary>
/// DataReader to bool extensions
/// </summary>
public static class ToBoolExtensions
{
/// <summary>
/// Convert to bool from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static bool ToBool(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
&& bool.Parse(dataReader[columnName].ToString());

/// <summary>
/// Convert to nullable bool from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static bool? ToNullBool(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? bool.Parse(dataReader[columnName].ToString())
: (bool?)null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// ***********************************************************************
// Assembly : RzR.Shared.Extensions.DomainCommonExtensions
// Author : RzR
// Created On : 2023-10-18 08:52
//
// Last Modified By : RzR
// Last Modified On : 2023-10-18 08:58
// ***********************************************************************
// <copyright file="ToByteExtensions.cs" company="">
// Copyright (c) RzR. All rights reserved.
// </copyright>
//
// <summary>
// </summary>
// ***********************************************************************

#region U S A G E S

using System.Data;
using DomainCommonExtensions.CommonExtensions.SystemData;

#endregion

namespace DomainCommonExtensions.ConvertExtensions.DataReader
{
/// <summary>
/// DataReader to byte/sbyte extensions
/// </summary>
public static class ToByteExtensions
{
/// <summary>
/// Convert to byte from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static byte ToByte(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? byte.Parse(dataReader[columnName].ToString())
: byte.MinValue;

/// <summary>
/// Convert to nullable byte from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static byte? ToNullByte(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? byte.Parse(dataReader[columnName].ToString())
: (byte?)null;

/// <summary>
/// Convert to sbyte from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static sbyte ToSByte(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? sbyte.Parse(dataReader[columnName].ToString())
: sbyte.MinValue;

/// <summary>
/// Convert to nullable sbyte from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static sbyte? ToNullSByte(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? sbyte.Parse(dataReader[columnName].ToString())
: (sbyte?)null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// ***********************************************************************
// Assembly : RzR.Shared.Extensions.DomainCommonExtensions
// Author : RzR
// Created On : 2023-10-18 09:30
//
// Last Modified By : RzR
// Last Modified On : 2023-10-18 09:33
// ***********************************************************************
// <copyright file="ToCharExtensions.cs" company="">
// Copyright (c) RzR. All rights reserved.
// </copyright>
//
// <summary>
// </summary>
// ***********************************************************************

#region U S A G E S

using System.Data;
using DomainCommonExtensions.CommonExtensions.SystemData;

#endregion

namespace DomainCommonExtensions.ConvertExtensions.DataReader
{
/// <summary>
/// DataReader to char extensions
/// </summary>
public static class ToCharExtensions
{
/// <summary>
/// Convert to char from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static char ToChar(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? char.Parse(dataReader[columnName].ToString())
: char.MinValue;

/// <summary>
/// Convert to nullable char from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns></returns>
/// <remarks></remarks>
public static char? ToNullChar(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? char.Parse(dataReader[columnName].ToString())
: (char?)null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
// ***********************************************************************
// Assembly : RzR.Shared.Extensions.DomainCommonExtensions
// Author : RzR
// Created On : 2023-10-18 15:06
//
// Last Modified By : RzR
// Last Modified On : 2023-10-18 15:06
// ***********************************************************************
// <copyright file="ToDateTimeExtensions.cs" company="">
// Copyright (c) RzR. All rights reserved.
// </copyright>
//
// <summary>
// </summary>
// ***********************************************************************

#region U S A G E S

using System;
using System.Data;
using System.Globalization;
using DomainCommonExtensions.CommonExtensions.SystemData;

#endregion

namespace DomainCommonExtensions.ConvertExtensions.DataReader
{
/// <summary>
/// DataReader to DateTime extensions
/// </summary>
public static class ToDateTimeExtensions
{
/// <summary>
/// Convert to DateTime from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns>Return converted DateTime value or DateTime.MinValue if the reader does not have value.</returns>
/// <remarks></remarks>
public static DateTime ToDateTime(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? Convert.ToDateTime(dataReader[columnName].ToString())
: DateTime.MinValue;

/// <summary>
/// Convert to nullable Guid from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns>Return converted DateTime value or NULL if the reader does not have value.</returns>
/// <remarks></remarks>
public static DateTime? ToNullDateTime(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? Convert.ToDateTime(dataReader[columnName].ToString())
: (DateTime?)null;

/// <summary>
/// DateTime.ParseExact from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <param name="format">DateTime format</param>
/// <returns>Return parsed DateTime value or DateTime.MinValue if the reader does not have value.</returns>
/// <remarks></remarks>
public static DateTime ToDateTimeParseExact(this IDataReader dataReader, string columnName, string format)
=> dataReader.IsWithValue(columnName)
? DateTime.ParseExact(dataReader[columnName].ToString(), format, CultureInfo.InvariantCulture)
: DateTime.MinValue;

/// <summary>
/// Nullable DateTime.ParseExact from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <param name="format">DateTime format</param>
/// <returns>Return parsed DateTime value or NULL if the reader does not have value.</returns>
/// <remarks></remarks>
public static DateTime? ToNullDateTimeParseExact(this IDataReader dataReader, string columnName, string format)
=> dataReader.IsWithValue(columnName)
? DateTime.ParseExact(dataReader[columnName].ToString(), format, CultureInfo.InvariantCulture)
: (DateTime?)null;

/// <summary>
/// DateTime.Parse from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns>Return parsed DateTime value or DateTime.MinValue if the reader does not have value.</returns>
/// <remarks></remarks>
public static DateTime ToDateTimeParse(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? DateTime.Parse(dataReader[columnName].ToString())
: DateTime.MinValue;

/// <summary>
/// Nullable DateTime.Parse from DataReader
/// </summary>
/// <param name="dataReader">Data reader</param>
/// <param name="columnName">Column name</param>
/// <returns>Return parsed DateTime value or NULL MinValue if the reader does not have value.</returns>
/// <remarks></remarks>
public static DateTime? ToNullDateTimeParse(this IDataReader dataReader, string columnName)
=> dataReader.IsWithValue(columnName)
? DateTime.Parse(dataReader[columnName].ToString())
: (DateTime?)null;
}
}
Loading

0 comments on commit e85dfad

Please sign in to comment.