Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#region License

// The PostgreSQL License
//
// Copyright (C) 2016 The Npgsql Development Team
Expand All @@ -19,6 +20,7 @@
// AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
// ON AN "AS IS" BASIS, AND THE NPGSQL DEVELOPMENT TEAM HAS NO OBLIGATIONS
// TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

#endregion

using System.Collections.Generic;
Expand All @@ -28,23 +30,37 @@

namespace Npgsql.EntityFrameworkCore.PostgreSQL.Query.ExpressionTranslators.Internal
{
/// <summary>
/// A composite member translator that dispatches to multiple specialized member translators specific to Npgsql.
/// </summary>
public class NpgsqlCompositeMemberTranslator : RelationalCompositeMemberTranslator
{
/// <summary>
/// The default member translators registered by the Npgsql provider.
/// </summary>
[NotNull] [ItemNotNull] static readonly IMemberTranslator[] MemberTranslators =
{
new NpgsqlStringLengthTranslator(),
new NpgsqlDateTimeMemberTranslator()
};

/// <inheritdoc />
public NpgsqlCompositeMemberTranslator(
[NotNull] RelationalCompositeMemberTranslatorDependencies dependencies,
[NotNull] INpgsqlOptions npgsqlOptions)
: base(dependencies)
{
AddTranslators(new List<IMemberTranslator>
{
new NpgsqlStringLengthTranslator(),
new NpgsqlDateTimeMemberTranslator()
});
// ReSharper disable once VirtualMemberCallInConstructor
AddTranslators(MemberTranslators);

foreach (var plugin in npgsqlOptions.Plugins)
plugin.AddMemberTranslators(this);
}

/// <summary>
/// Adds additional dispatches to the translators list.
/// </summary>
/// <param name="translators">The translators.</param>
public new virtual void AddTranslators([NotNull] IEnumerable<IMemberTranslator> translators)
=> base.AddTranslators(translators);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#region License

// The PostgreSQL License
//
// Copyright (C) 2016 The Npgsql Development Team
Expand All @@ -19,6 +20,7 @@
// AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
// ON AN "AS IS" BASIS, AND THE NPGSQL DEVELOPMENT TEAM HAS NO OBLIGATIONS
// TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

#endregion

using System.Collections.Generic;
Expand All @@ -28,9 +30,15 @@

namespace Npgsql.EntityFrameworkCore.PostgreSQL.Query.ExpressionTranslators.Internal
{
/// <summary>
/// A composite method call translator that dispatches to multiple specialized method call translators specific to Npgsql.
/// </summary>
public class NpgsqlCompositeMethodCallTranslator : RelationalCompositeMethodCallTranslator
{
static readonly IMethodCallTranslator[] _methodCallTranslators =
/// <summary>
/// The default method call translators registered by the Npgsql provider.
/// </summary>
[NotNull] [ItemNotNull] static readonly IMethodCallTranslator[] MethodCallTranslators =
{
new NpgsqlArraySequenceEqualTranslator(),
new NpgsqlConvertTranslator(),
Expand All @@ -55,18 +63,23 @@ public class NpgsqlCompositeMethodCallTranslator : RelationalCompositeMethodCall
new NpgsqlRangeTranslator()
};

/// <inheritdoc />
public NpgsqlCompositeMethodCallTranslator(
[NotNull] RelationalCompositeMethodCallTranslatorDependencies dependencies,
[NotNull] INpgsqlOptions npgsqlOptions)
: base(dependencies)
{
// ReSharper disable once DoNotCallOverridableMethodsInConstructor
AddTranslators(_methodCallTranslators);
AddTranslators(MethodCallTranslators);

foreach (var plugin in npgsqlOptions.Plugins)
plugin.AddMethodCallTranslators(this);
}

/// <summary>
/// Adds additional dispatches to the translators list.
/// </summary>
/// <param name="translators">The translators.</param>
public new virtual void AddTranslators([NotNull] IEnumerable<IMethodCallTranslator> translators)
=> base.AddTranslators(translators);
}
Expand Down