using System; using System.Data.Common; using System.Linq; namespace Sony.Filtr.Utility.Extensions { public static class DbDataReaderExtensions { public static string GetString(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? null : reader.GetString(ordinal); } public static int GetInt32(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.GetInt32(ordinal); } public static int? GetIntOrDefault(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? (int?)null : reader.GetInt32(ordinal); } public static int GetIntOrFallback(this DbDataReader reader, string columnName, int fallback) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? fallback: reader.GetInt32(ordinal); } public static long GetLong(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.GetInt64(ordinal); } public static long? GetLongOrDefault(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? (long?)null : reader.GetInt64(ordinal); } public static long GetLongOrFallback(this DbDataReader reader, string columnName, long fallback) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? fallback : reader.GetInt64(ordinal); } public static float? GetFloatOrDefault(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? (float?)null : reader.GetFloat(ordinal); } public static double? GetDoubleOrDefault(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? (double?)null : reader.GetDouble(ordinal); } public static double GetDoubleOrFallback(this DbDataReader reader, string columnName, double fallback) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? fallback : reader.GetDouble(ordinal); } public static bool GetBoolean(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.GetBoolean(ordinal); } public static bool GetBooleanOrDefault(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? false : reader.GetBoolean(ordinal); } public static DateTime GetDateTime(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.GetDateTime(ordinal); } public static DateTime GetUtcDateTime(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return DateTime.SpecifyKind(reader.GetDateTime(ordinal), DateTimeKind.Utc); } public static DateTime? GetDateTimeOrDefault(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? (DateTime?)null : reader.GetDateTime(ordinal); } public static DateTime? GetUtcDateTimeOrDefault(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal) ? (DateTime?)null : DateTime.SpecifyKind(reader.GetDateTime(ordinal), DateTimeKind.Utc); } public static bool IsDBNull(this DbDataReader reader, string columnName) { var ordinal = reader.GetOrdinal(columnName); return reader.IsDBNull(ordinal); } } }