Skip to content

Commit

Permalink
Code quality improvements
Browse files Browse the repository at this point in the history
C# 7 etc.
  • Loading branch information
roji committed Jul 7, 2018
1 parent 9a737da commit b63d003
Show file tree
Hide file tree
Showing 6 changed files with 433 additions and 1,219 deletions.
131 changes: 58 additions & 73 deletions src/EntityFramework6.Npgsql/NpgsqlMigrationSqlGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,42 +69,42 @@ protected virtual void Convert([NotNull] IEnumerable<MigrationOperation> operati
{
foreach (var migrationOperation in operations)
{
if (migrationOperation is AddColumnOperation)
Convert(migrationOperation as AddColumnOperation);
else if (migrationOperation is AlterColumnOperation)
Convert(migrationOperation as AlterColumnOperation);
else if (migrationOperation is CreateTableOperation)
Convert(migrationOperation as CreateTableOperation);
else if (migrationOperation is DropForeignKeyOperation)
Convert(migrationOperation as DropForeignKeyOperation);
else if (migrationOperation is DropTableOperation)
Convert(migrationOperation as DropTableOperation);
else if (migrationOperation is MoveTableOperation)
Convert(migrationOperation as MoveTableOperation);
else if (migrationOperation is RenameTableOperation)
Convert(migrationOperation as RenameTableOperation);
else if (migrationOperation is AddForeignKeyOperation)
Convert(migrationOperation as AddForeignKeyOperation);
else if (migrationOperation is DropIndexOperation)
Convert(migrationOperation as DropIndexOperation);
else if (migrationOperation is SqlOperation)
AddStatment((migrationOperation as SqlOperation).Sql, (migrationOperation as SqlOperation).SuppressTransaction);
else if (migrationOperation is AddPrimaryKeyOperation)
Convert(migrationOperation as AddPrimaryKeyOperation);
else if (migrationOperation is CreateIndexOperation)
Convert(migrationOperation as CreateIndexOperation);
else if (migrationOperation is RenameIndexOperation)
Convert(migrationOperation as RenameIndexOperation);
else if (migrationOperation is DropColumnOperation)
Convert(migrationOperation as DropColumnOperation);
else if (migrationOperation is DropPrimaryKeyOperation)
Convert(migrationOperation as DropPrimaryKeyOperation);
else if (migrationOperation is HistoryOperation)
Convert(migrationOperation as HistoryOperation);
else if (migrationOperation is RenameColumnOperation)
Convert(migrationOperation as RenameColumnOperation);
else if (migrationOperation is UpdateDatabaseOperation)
Convert((migrationOperation as UpdateDatabaseOperation).Migrations as IEnumerable<MigrationOperation>);
if (migrationOperation is AddColumnOperation operation)
Convert(operation);
else if (migrationOperation is AlterColumnOperation columnOperation)
Convert(columnOperation);
else if (migrationOperation is CreateTableOperation tableOperation)
Convert(tableOperation);
else if (migrationOperation is DropForeignKeyOperation keyOperation)
Convert(keyOperation);
else if (migrationOperation is DropTableOperation dropTableOperation)
Convert(dropTableOperation);
else if (migrationOperation is MoveTableOperation moveTableOperation)
Convert(moveTableOperation);
else if (migrationOperation is RenameTableOperation renameTableOperation)
Convert(renameTableOperation);
else if (migrationOperation is AddForeignKeyOperation foreignKeyOperation)
Convert(foreignKeyOperation);
else if (migrationOperation is DropIndexOperation indexOperation)
Convert(indexOperation);
else if (migrationOperation is SqlOperation sqlOperation)
AddStatment(sqlOperation.Sql, sqlOperation.SuppressTransaction);
else if (migrationOperation is AddPrimaryKeyOperation primaryKeyOperation)
Convert(primaryKeyOperation);
else if (migrationOperation is CreateIndexOperation createIndexOperation)
Convert(createIndexOperation);
else if (migrationOperation is RenameIndexOperation renameIndexOperation)
Convert(renameIndexOperation);
else if (migrationOperation is DropColumnOperation dropColumnOperation)
Convert(dropColumnOperation);
else if (migrationOperation is DropPrimaryKeyOperation dropPrimaryKeyOperation)
Convert(dropPrimaryKeyOperation);
else if (migrationOperation is HistoryOperation historyOperation)
Convert(historyOperation);
else if (migrationOperation is RenameColumnOperation renameColumnOperation)
Convert(renameColumnOperation);
else if (migrationOperation is UpdateDatabaseOperation databaseOperation)
Convert(databaseOperation.Migrations as IEnumerable<MigrationOperation>);
else
throw new NotImplementedException("Unhandled MigrationOperation " + migrationOperation.GetType().Name + " in " + GetType().Name);
}
Expand Down Expand Up @@ -237,6 +237,7 @@ protected virtual void Convert(MoveTableOperation moveTableOperation)
#endregion

#region Columns

protected virtual void Convert(AddColumnOperation addColumnOperation)
{
var sql = new StringBuilder();
Expand Down Expand Up @@ -507,15 +508,11 @@ protected virtual void Convert(DropPrimaryKeyOperation dropPrimaryKeyOperation)
/// <returns>The quoted identifier.</returns>
void AppendQuotedIdentifier(string identifier, StringBuilder builder)
{
if (String.IsNullOrEmpty(identifier))
{
if (string.IsNullOrEmpty(identifier))
throw new ArgumentException("Value cannot be null or empty", nameof(identifier));
}

if (identifier[identifier.Length - 1] == '"' && identifier[0] == '"')
{
builder.Append(identifier);
}
else
{
builder.Append('"');
Expand All @@ -531,19 +528,11 @@ void AppendQuotedIdentifier(string identifier, StringBuilder builder)
/// <returns>The quoted identifier.</returns>
string QuoteIdentifier(string identifier)
{
if (String.IsNullOrEmpty(identifier))
{
if (string.IsNullOrEmpty(identifier))
throw new ArgumentException("Value cannot be null or empty", nameof(identifier));
}

if (identifier[identifier.Length - 1] == '"' && identifier[0] == '"')
{
return identifier;
}
else
{
return '"' + identifier + '"';
}
return identifier[identifier.Length - 1] == '"' && identifier[0] == '"'
? identifier : $"\"{identifier}\"";
}

void AppendColumn(ColumnModel column, StringBuilder sql)
Expand Down Expand Up @@ -727,9 +716,7 @@ void AppendTableName(string tableName, StringBuilder sql)
{
var dotIndex = tableName.IndexOf('.');
if (dotIndex == -1)
{
AppendQuotedIdentifier(tableName, sql);
}
else
{
AppendQuotedIdentifier(tableName.Remove(dotIndex), sql);
Expand All @@ -756,9 +743,7 @@ void AppendValue(byte[] values, StringBuilder sql)
}

void AppendValue(bool value, StringBuilder sql)
{
sql.Append(value ? "TRUE" : "FALSE");
}
=> sql.Append(value ? "TRUE" : "FALSE");

void AppendValue(DateTime value, StringBuilder sql)
{
Expand Down Expand Up @@ -804,22 +789,22 @@ void AppendValue(DbGeometry value, StringBuilder sql)

void AppendValue(object value, StringBuilder sql)
{
if (value is byte[])
AppendValue((byte[])value, sql);
else if (value is bool)
AppendValue((bool)value, sql);
else if (value is DateTime)
AppendValue((DateTime)value, sql);
else if (value is DateTimeOffset)
AppendValue((DateTimeOffset)value, sql);
else if (value is Guid)
AppendValue((Guid)value, sql);
else if (value is string)
AppendValue((string)value, sql);
else if (value is TimeSpan)
AppendValue((TimeSpan)value, sql);
else if (value is DbGeometry)
AppendValue((DbGeometry)value, sql);
if (value is byte[] bytes)
AppendValue(bytes, sql);
else if (value is bool b)
AppendValue(b, sql);
else if (value is DateTime time)
AppendValue(time, sql);
else if (value is DateTimeOffset offset)
AppendValue(offset, sql);
else if (value is Guid guid)
AppendValue(guid, sql);
else if (value is string s)
AppendValue(s, sql);
else if (value is TimeSpan timeSpan)
AppendValue(timeSpan, sql);
else if (value is DbGeometry geometry)
AppendValue(geometry, sql);
else
sql.Append(string.Format(CultureInfo.InvariantCulture, "{0}", value));
}
Expand Down
14 changes: 4 additions & 10 deletions src/EntityFramework6.Npgsql/NpgsqlProviderManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,13 @@

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Entity;
using System.Data.Entity.Core.Common;
using System.Data.Entity.Core.Metadata.Edm;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reflection;
using System.Xml;
using System.Data;
using JetBrains.Annotations;
using NpgsqlTypes;

Expand Down Expand Up @@ -127,16 +125,14 @@ public override TypeUsage GetEdmType([NotNull] TypeUsage storeType)
return TypeUsage.CreateDefaultTypeUsage(primitiveType);
case "numeric":
{
byte scale;
byte precision;
if (storeType.Facets.TryGetValue(ScaleFacet, false, out facet) &&
!facet.IsUnbounded && facet.Value != null)
{
scale = (byte)facet.Value;
var scale = (byte)facet.Value;
if (storeType.Facets.TryGetValue(PrecisionFacet, false, out facet) &&
!facet.IsUnbounded && facet.Value != null)
{
precision = (byte)facet.Value;
var precision = (byte)facet.Value;
return TypeUsage.CreateDecimalTypeUsage(primitiveType, precision, scale);
}
}
Expand Down Expand Up @@ -242,16 +238,14 @@ public override TypeUsage GetStoreType([NotNull] TypeUsage edmType)
return TypeUsage.CreateDefaultTypeUsage(StoreTypeNameToStorePrimitiveType["float8"]);
case PrimitiveTypeKind.Decimal:
{
byte scale;
byte precision;
if (edmType.Facets.TryGetValue(ScaleFacet, false, out facet) &&
!facet.IsUnbounded && facet.Value != null)
{
scale = (byte)facet.Value;
var scale = (byte)facet.Value;
if (edmType.Facets.TryGetValue(PrecisionFacet, false, out facet) &&
!facet.IsUnbounded && facet.Value != null)
{
precision = (byte)facet.Value;
var precision = (byte)facet.Value;
return TypeUsage.CreateDecimalTypeUsage(StoreTypeNameToStorePrimitiveType["numeric"], precision, scale);
}
}
Expand Down
Loading

0 comments on commit b63d003

Please sign in to comment.