From 99120623f15a6e98fb3103d7795a0298b6fe4231 Mon Sep 17 00:00:00 2001 From: Chris Philips Date: Sun, 2 Oct 2022 14:37:17 -0700 Subject: [PATCH 1/2] refactor: remove obsolete code --- global.json | 2 +- .../Entities/IEntityRepository.cs | 18 -- .../Projections/IProjectionRepository.cs | 9 - .../IAgentSignatureFilterBuilder.cs | 8 - .../FilterBuilders/ICommandFilterBuilder.cs | 8 - .../FilterBuilders/ILeaseFilterBuilder.cs | 8 - .../FilterBuilders/ITagFilterBuilder.cs | 8 - .../IAgentSignatureSortBuilder.cs | 12 +- .../SortBuilders/ICommandSortBuilder.cs | 11 +- .../Queries/SortBuilders/ILeaseSortBuilder.cs | 8 - .../Queries/SortBuilders/ITagSortBuilder.cs | 8 - .../Snapshots/ISnapshotRepository.cs | 9 - .../Transactions/ITransactionRepository.cs | 154 ------------------ src/EntityDb.Common/Entities/IEntity.cs | 7 - .../AgentSignatureReverseSortBuilder.cs | 10 -- .../SortBuilders/CommandReverseSortBuilder.cs | 9 - .../SortBuilders/LeaseReverseSortBuilder.cs | 9 - .../SortBuilders/TagReverseSortBuilder.cs | 9 - src/EntityDb.Common/Snapshots/ISnapshot.cs | 9 - .../Documents/LeaseDocument.cs | 2 - src/EntityDb.MongoDb/Documents/TagDocument.cs | 2 - .../AgentSignatureFilterBuilder.cs | 10 -- .../FilterBuilders/CommandFilterBuilder.cs | 10 -- .../FilterBuilders/FilterBuilderBase.cs | 18 -- .../FilterBuilders/LeaseFilterBuilder.cs | 14 -- .../FilterBuilders/TagFilterBuilder.cs | 14 -- .../EmbeddedFilterDefinition.cs | 45 ----- .../SortBuilders/AgentSignatureSortBuilder.cs | 7 - .../SortBuilders/CommandSortBuilder.cs | 7 - .../Queries/SortBuilders/LeaseSortBuilder.cs | 12 -- .../Queries/SortBuilders/SortBuilderBase.cs | 13 -- .../Queries/SortBuilders/TagSortBuilder.cs | 12 -- .../SortDefinitions/EmbeddedSortDefinition.cs | 44 ----- .../Rewriters/BsonDocumentRewriter.cs | 107 ------------ .../Rewriters/HoistedRewriter.cs | 54 ------ .../Rewriters/BsonDocumentRewriterTests.cs | 81 --------- 36 files changed, 3 insertions(+), 765 deletions(-) delete mode 100644 src/EntityDb.MongoDb/Queries/FilterDefinitions/EmbeddedFilterDefinition.cs delete mode 100644 src/EntityDb.MongoDb/Queries/SortDefinitions/EmbeddedSortDefinition.cs delete mode 100644 src/EntityDb.MongoDb/Rewriters/BsonDocumentRewriter.cs delete mode 100644 src/EntityDb.MongoDb/Rewriters/HoistedRewriter.cs delete mode 100644 test/EntityDb.MongoDb.Tests/Rewriters/BsonDocumentRewriterTests.cs diff --git a/global.json b/global.json index 21325d89..9e39014e 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.301", + "version": "6.0.400", "allowPrerelease": false, "rollForward": "disable" } diff --git a/src/EntityDb.Abstractions/Entities/IEntityRepository.cs b/src/EntityDb.Abstractions/Entities/IEntityRepository.cs index 1af25d9b..19dd0fae 100644 --- a/src/EntityDb.Abstractions/Entities/IEntityRepository.cs +++ b/src/EntityDb.Abstractions/Entities/IEntityRepository.cs @@ -2,7 +2,6 @@ using EntityDb.Abstractions.Snapshots; using EntityDb.Abstractions.Transactions; using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; namespace EntityDb.Abstractions.Entities; @@ -22,23 +21,6 @@ public interface IEntityRepository : IDisposableResource /// ISnapshotRepository? SnapshotRepository { get; } - /// - [Obsolete("Please use GetSnapshot(...) instead. This method will be removed at a later date.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public Task GetCurrent(Id entityId, CancellationToken cancellationToken = default) - { - return GetSnapshot(entityId, cancellationToken); - } - - /// - [Obsolete("Please use GetSnapshot(...) instead. This method will be removed at a later date.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - Task GetAtVersion(Id entityId, VersionNumber lteVersionNumber, - CancellationToken cancellationToken = default) - { - return GetSnapshot(entityId + lteVersionNumber, cancellationToken); - } - /// /// Returns the snapshot of a for a given . /// diff --git a/src/EntityDb.Abstractions/Projections/IProjectionRepository.cs b/src/EntityDb.Abstractions/Projections/IProjectionRepository.cs index 8d2018d1..42ed6980 100644 --- a/src/EntityDb.Abstractions/Projections/IProjectionRepository.cs +++ b/src/EntityDb.Abstractions/Projections/IProjectionRepository.cs @@ -2,7 +2,6 @@ using EntityDb.Abstractions.Snapshots; using EntityDb.Abstractions.Transactions; using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; namespace EntityDb.Abstractions.Projections; @@ -22,14 +21,6 @@ public interface IProjectionRepository : IDisposableResource /// ISnapshotRepository? SnapshotRepository { get; } - /// - [Obsolete("Please use GetSnapshot(...) instead. This method will be removed at a later date.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public Task GetCurrent(Id projectionId, CancellationToken cancellationToken = default) - { - return GetSnapshot(projectionId, cancellationToken); - } - /// /// Returns the snapshot of a for a given . /// diff --git a/src/EntityDb.Abstractions/Queries/FilterBuilders/IAgentSignatureFilterBuilder.cs b/src/EntityDb.Abstractions/Queries/FilterBuilders/IAgentSignatureFilterBuilder.cs index af4fa3cb..7744a93b 100644 --- a/src/EntityDb.Abstractions/Queries/FilterBuilders/IAgentSignatureFilterBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/FilterBuilders/IAgentSignatureFilterBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Abstractions.Queries.FilterBuilders; @@ -10,12 +8,6 @@ namespace EntityDb.Abstractions.Queries.FilterBuilders; /// The type of filter used by the repository. public interface IAgentSignatureFilterBuilder : IFilterBuilder { - /// - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TFilter AgentSignatureMatches(Expression> agentSignatureExpression) - => throw new NotSupportedException(); - /// /// Returns a that only includes agentSignatures with any entity id which is contained /// in a set diff --git a/src/EntityDb.Abstractions/Queries/FilterBuilders/ICommandFilterBuilder.cs b/src/EntityDb.Abstractions/Queries/FilterBuilders/ICommandFilterBuilder.cs index 9b5d2e5a..774787e8 100644 --- a/src/EntityDb.Abstractions/Queries/FilterBuilders/ICommandFilterBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/FilterBuilders/ICommandFilterBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Abstractions.Queries.FilterBuilders; @@ -10,12 +8,6 @@ namespace EntityDb.Abstractions.Queries.FilterBuilders; /// The type of filter used by the repository. public interface ICommandFilterBuilder : IFilterBuilder { - /// - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TFilter CommandMatches(Expression> commandExpression) - => throw new NotSupportedException(); - /// /// Returns a that only includes commands with an entity id which is contained in a set /// of entity ids. diff --git a/src/EntityDb.Abstractions/Queries/FilterBuilders/ILeaseFilterBuilder.cs b/src/EntityDb.Abstractions/Queries/FilterBuilders/ILeaseFilterBuilder.cs index 86c06086..a2a9c558 100644 --- a/src/EntityDb.Abstractions/Queries/FilterBuilders/ILeaseFilterBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/FilterBuilders/ILeaseFilterBuilder.cs @@ -1,7 +1,5 @@ using EntityDb.Abstractions.Leases; using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Abstractions.Queries.FilterBuilders; @@ -11,12 +9,6 @@ namespace EntityDb.Abstractions.Queries.FilterBuilders; /// The type of filter used by the repository. public interface ILeaseFilterBuilder : IFilterBuilder { - /// - [Obsolete("This method will be removed in the future.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TFilter LeaseMatches(Expression> leaseExpression) - => throw new NotSupportedException(); - /// /// Returns a that only includes leases with an entity id which is contained in a set /// of entity ids. diff --git a/src/EntityDb.Abstractions/Queries/FilterBuilders/ITagFilterBuilder.cs b/src/EntityDb.Abstractions/Queries/FilterBuilders/ITagFilterBuilder.cs index b8454772..52069d1a 100644 --- a/src/EntityDb.Abstractions/Queries/FilterBuilders/ITagFilterBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/FilterBuilders/ITagFilterBuilder.cs @@ -1,7 +1,5 @@ using EntityDb.Abstractions.Tags; using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Abstractions.Queries.FilterBuilders; @@ -11,12 +9,6 @@ namespace EntityDb.Abstractions.Queries.FilterBuilders; /// The type of filter used by the repository. public interface ITagFilterBuilder : IFilterBuilder { - /// - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TFilter TagMatches(Expression> tagExpression) - => throw new NotSupportedException(); - /// /// Returns a that only includes tags with an entity id which is contained in a set of /// entity ids. diff --git a/src/EntityDb.Abstractions/Queries/SortBuilders/IAgentSignatureSortBuilder.cs b/src/EntityDb.Abstractions/Queries/SortBuilders/IAgentSignatureSortBuilder.cs index 65d75275..18f699f9 100644 --- a/src/EntityDb.Abstractions/Queries/SortBuilders/IAgentSignatureSortBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/SortBuilders/IAgentSignatureSortBuilder.cs @@ -1,7 +1,4 @@ -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; - -namespace EntityDb.Abstractions.Queries.SortBuilders; +namespace EntityDb.Abstractions.Queries.SortBuilders; /// /// Builds a for a agentSignature query. @@ -9,13 +6,6 @@ namespace EntityDb.Abstractions.Queries.SortBuilders; /// The type of sort used by the repository. public interface IAgentSignatureSortBuilder : ISortBuilder { - /// - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TSort AgentSignatureProperty(bool ascending, - Expression> agentSignatureExpression) - => throw new NotSupportedException(); - /// /// Returns a that orders agentSignatures by entity ids. /// diff --git a/src/EntityDb.Abstractions/Queries/SortBuilders/ICommandSortBuilder.cs b/src/EntityDb.Abstractions/Queries/SortBuilders/ICommandSortBuilder.cs index e4646c09..4585a80f 100644 --- a/src/EntityDb.Abstractions/Queries/SortBuilders/ICommandSortBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/SortBuilders/ICommandSortBuilder.cs @@ -1,7 +1,4 @@ -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; - -namespace EntityDb.Abstractions.Queries.SortBuilders; +namespace EntityDb.Abstractions.Queries.SortBuilders; /// /// Builds a for a command query. @@ -9,12 +6,6 @@ namespace EntityDb.Abstractions.Queries.SortBuilders; /// The type of sort used by the repository. public interface ICommandSortBuilder : ISortBuilder { - /// - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TSort CommandProperty(bool ascending, Expression> commandExpression) - => throw new NotSupportedException(); - /// /// Returns a that orders commands by entity id. /// diff --git a/src/EntityDb.Abstractions/Queries/SortBuilders/ILeaseSortBuilder.cs b/src/EntityDb.Abstractions/Queries/SortBuilders/ILeaseSortBuilder.cs index 310f75cd..473a8e28 100644 --- a/src/EntityDb.Abstractions/Queries/SortBuilders/ILeaseSortBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/SortBuilders/ILeaseSortBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.Leases; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Abstractions.Queries.SortBuilders; @@ -10,12 +8,6 @@ namespace EntityDb.Abstractions.Queries.SortBuilders; /// The type of sort used by the repository. public interface ILeaseSortBuilder : ISortBuilder { - /// - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TSort LeaseProperty(bool ascending, Expression> leaseExpression) - => throw new NotSupportedException(); - /// /// Returns a that orders leases by entity id. /// diff --git a/src/EntityDb.Abstractions/Queries/SortBuilders/ITagSortBuilder.cs b/src/EntityDb.Abstractions/Queries/SortBuilders/ITagSortBuilder.cs index b1013780..e6394571 100644 --- a/src/EntityDb.Abstractions/Queries/SortBuilders/ITagSortBuilder.cs +++ b/src/EntityDb.Abstractions/Queries/SortBuilders/ITagSortBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.Tags; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Abstractions.Queries.SortBuilders; @@ -10,12 +8,6 @@ namespace EntityDb.Abstractions.Queries.SortBuilders; /// The type of sort used by the repository. public interface ITagSortBuilder : ISortBuilder { - /// - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - TSort TagProperty(bool ascending, Expression> tagExpression) - => throw new NotSupportedException(); - /// /// Returns a that orders tags by entity id. /// diff --git a/src/EntityDb.Abstractions/Snapshots/ISnapshotRepository.cs b/src/EntityDb.Abstractions/Snapshots/ISnapshotRepository.cs index 6881712a..31d4d68a 100644 --- a/src/EntityDb.Abstractions/Snapshots/ISnapshotRepository.cs +++ b/src/EntityDb.Abstractions/Snapshots/ISnapshotRepository.cs @@ -1,6 +1,5 @@ using EntityDb.Abstractions.Disposables; using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; namespace EntityDb.Abstractions.Snapshots; @@ -10,14 +9,6 @@ namespace EntityDb.Abstractions.Snapshots; /// The type of snapshot stored in the . public interface ISnapshotRepository : IDisposableResource { - /// - [Obsolete("Please use GetSnapshotOrDefault(...) instead. This method will be removed at a later date.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public Task GetSnapshot(Id snapshotId, CancellationToken cancellationToken = default) - { - return GetSnapshotOrDefault(snapshotId, cancellationToken); - } - /// /// Returns an exact version of snapshot of a or /// default(). diff --git a/src/EntityDb.Abstractions/Transactions/ITransactionRepository.cs b/src/EntityDb.Abstractions/Transactions/ITransactionRepository.cs index c8c78de2..0ccc7901 100644 --- a/src/EntityDb.Abstractions/Transactions/ITransactionRepository.cs +++ b/src/EntityDb.Abstractions/Transactions/ITransactionRepository.cs @@ -4,7 +4,6 @@ using EntityDb.Abstractions.Queries; using EntityDb.Abstractions.Tags; using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; namespace EntityDb.Abstractions.Transactions; @@ -13,159 +12,6 @@ namespace EntityDb.Abstractions.Transactions; /// public interface ITransactionRepository : IDisposableResource { - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateTransactionIds instead! This method will be removed at a future date.")] - Task GetTransactionIds(IAgentSignatureQuery agentSignatureQuery, - CancellationToken cancellationToken = default) - { - return EnumerateTransactionIds(agentSignatureQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateTransactionIds instead! This method will be removed at a future date.")] - Task GetTransactionIds(ICommandQuery commandQuery, - CancellationToken cancellationToken = default) - { - return EnumerateTransactionIds(commandQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateTransactionIds instead! This method will be removed at a future date.")] - Task GetTransactionIds(ILeaseQuery leaseQuery, - CancellationToken cancellationToken = default) - { - return EnumerateTransactionIds(leaseQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateTransactionIds instead! This method will be removed at a future date.")] - Task GetTransactionIds(ITagQuery tagQuery, CancellationToken cancellationToken = default) - { - return EnumerateTransactionIds(tagQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateEntityIds instead! This method will be removed at a future date.")] - public Task GetEntityIds(IAgentSignatureQuery agentSignatureQuery, - CancellationToken cancellationToken = default) - { - return EnumerateEntityIds(agentSignatureQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateEntityIds instead! This method will be removed at a future date.")] - public Task GetEntityIds(ICommandQuery commandQuery, - CancellationToken cancellationToken = default) - { - return EnumerateEntityIds(commandQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateEntityIds instead! This method will be removed at a future date.")] - public Task GetEntityIds(ILeaseQuery leaseQuery, - CancellationToken cancellationToken = default) - { - return EnumerateEntityIds(leaseQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateEntityIds instead! This method will be removed at a future date.")] - public Task GetEntityIds(ITagQuery tagQuery, - CancellationToken cancellationToken = default) - { - return EnumerateEntityIds(tagQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateAgentSignatures instead! This method will be removed at a future date.")] - Task GetAgentSignatures(IAgentSignatureQuery agentSignatureQuery, - CancellationToken cancellationToken = default) - { - return EnumerateAgentSignatures(agentSignatureQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateCommands instead! This method will be removed at a future date.")] - Task GetCommands(ICommandQuery commandQuery, - CancellationToken cancellationToken = default) - { - return EnumerateCommands(commandQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateLeases instead! This method will be removed at a future date.")] - Task GetLeases(ILeaseQuery leaseQuery, - CancellationToken cancellationToken = default) - { - return EnumerateLeases(leaseQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateTags instead! This method will be removed at a future date.")] - Task GetTags(ITagQuery tagQuery, - CancellationToken cancellationToken = default) - { - return EnumerateTags(tagQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateAnnotatedAgentSignatures instead! This method will be removed at a future date.")] - Task[]> GetAnnotatedAgentSignatures(IAgentSignatureQuery agentSignatureQuery, - CancellationToken cancellationToken = default) - { - return EnumerateAnnotatedAgentSignatures(agentSignatureQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - - /// - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - [Obsolete("Please use EnumerateAnnotatedCommands instead! This method will be removed at a future date.")] - Task[]> GetAnnotatedCommands(ICommandQuery commandQuery, - CancellationToken cancellationToken = default) - { - return EnumerateAnnotatedCommands(commandQuery, cancellationToken) - .ToArrayAsync(cancellationToken) - .AsTask(); - } - /// /// Returns the transaction ids which are found by a agentSignature query. /// diff --git a/src/EntityDb.Common/Entities/IEntity.cs b/src/EntityDb.Common/Entities/IEntity.cs index a0b3ac9a..3c4ceed6 100644 --- a/src/EntityDb.Common/Entities/IEntity.cs +++ b/src/EntityDb.Common/Entities/IEntity.cs @@ -8,13 +8,6 @@ namespace EntityDb.Common.Entities; /// The type of the entity. public interface IEntity : ISnapshot { - /// - [Obsolete("Please use Reduce(object) instead. This method is no longer in supported.", true)] - TEntity Reduce(params object[] command) - { - throw new NotSupportedException(); - } - /// /// Returns a new that incorporates the commands. /// diff --git a/src/EntityDb.Common/Queries/SortBuilders/AgentSignatureReverseSortBuilder.cs b/src/EntityDb.Common/Queries/SortBuilders/AgentSignatureReverseSortBuilder.cs index c406503a..3e38c85b 100644 --- a/src/EntityDb.Common/Queries/SortBuilders/AgentSignatureReverseSortBuilder.cs +++ b/src/EntityDb.Common/Queries/SortBuilders/AgentSignatureReverseSortBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.Queries.SortBuilders; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Common.Queries.SortBuilders; @@ -18,12 +16,4 @@ public TSort AgentSignatureType(bool ascending) { return AgentSignatureSortBuilder.AgentSignatureType(!ascending); } - - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public TSort AgentSignatureProperty(bool ascending, - Expression> agentSignatureExpression) - { - return AgentSignatureSortBuilder.AgentSignatureProperty(!ascending, agentSignatureExpression); - } } diff --git a/src/EntityDb.Common/Queries/SortBuilders/CommandReverseSortBuilder.cs b/src/EntityDb.Common/Queries/SortBuilders/CommandReverseSortBuilder.cs index 361eab9b..9259e436 100644 --- a/src/EntityDb.Common/Queries/SortBuilders/CommandReverseSortBuilder.cs +++ b/src/EntityDb.Common/Queries/SortBuilders/CommandReverseSortBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.Queries.SortBuilders; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Common.Queries.SortBuilders; @@ -22,11 +20,4 @@ public TSort CommandType(bool ascending) { return CommandSortBuilder.CommandType(!ascending); } - - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public TSort CommandProperty(bool ascending, Expression> commandExpression) - { - return CommandSortBuilder.CommandProperty(!ascending, commandExpression); - } } diff --git a/src/EntityDb.Common/Queries/SortBuilders/LeaseReverseSortBuilder.cs b/src/EntityDb.Common/Queries/SortBuilders/LeaseReverseSortBuilder.cs index e8161b5d..51cfc169 100644 --- a/src/EntityDb.Common/Queries/SortBuilders/LeaseReverseSortBuilder.cs +++ b/src/EntityDb.Common/Queries/SortBuilders/LeaseReverseSortBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.Queries.SortBuilders; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Common.Queries.SortBuilders; @@ -23,13 +21,6 @@ public TSort LeaseType(bool ascending) return LeaseSortBuilder.LeaseType(!ascending); } - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public TSort LeaseProperty(bool ascending, Expression> leaseExpression) - { - return LeaseSortBuilder.LeaseProperty(!ascending, leaseExpression); - } - public TSort LeaseScope(bool ascending) { return LeaseSortBuilder.LeaseScope(!ascending); diff --git a/src/EntityDb.Common/Queries/SortBuilders/TagReverseSortBuilder.cs b/src/EntityDb.Common/Queries/SortBuilders/TagReverseSortBuilder.cs index fa3364bc..68243616 100644 --- a/src/EntityDb.Common/Queries/SortBuilders/TagReverseSortBuilder.cs +++ b/src/EntityDb.Common/Queries/SortBuilders/TagReverseSortBuilder.cs @@ -1,6 +1,4 @@ using EntityDb.Abstractions.Queries.SortBuilders; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.Common.Queries.SortBuilders; @@ -22,13 +20,6 @@ public TSort TagType(bool ascending) return TagSortBuilder.TagType(!ascending); } - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public TSort TagProperty(bool ascending, Expression> tagExpression) - { - return TagSortBuilder.TagProperty(!ascending, tagExpression); - } - public TSort TagLabel(bool ascending) { return TagSortBuilder.TagLabel(!ascending); diff --git a/src/EntityDb.Common/Snapshots/ISnapshot.cs b/src/EntityDb.Common/Snapshots/ISnapshot.cs index 2941c86f..11fd26a3 100644 --- a/src/EntityDb.Common/Snapshots/ISnapshot.cs +++ b/src/EntityDb.Common/Snapshots/ISnapshot.cs @@ -1,5 +1,4 @@ using EntityDb.Abstractions.ValueObjects; -using System.Diagnostics.CodeAnalysis; namespace EntityDb.Common.Snapshots; @@ -44,12 +43,4 @@ public interface ISnapshot /// The previous instance of the latest snapshot. /// true if this snapshot instance should be recorded as the latest snapshot, or else false. bool ShouldRecordAsLatest(TSnapshot? previousLatestSnapshot); - - /// - [Obsolete("This use ShouldRecordAsLatest() instead. This method will be removed at a later date.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - bool ShouldReplace(TSnapshot? previousSnapshot) - { - return ShouldRecordAsLatest(previousSnapshot); - } } diff --git a/src/EntityDb.MongoDb/Documents/LeaseDocument.cs b/src/EntityDb.MongoDb/Documents/LeaseDocument.cs index 4b41c3ea..edc1f5a5 100644 --- a/src/EntityDb.MongoDb/Documents/LeaseDocument.cs +++ b/src/EntityDb.MongoDb/Documents/LeaseDocument.cs @@ -20,8 +20,6 @@ internal sealed record LeaseDocument : DocumentBase, IEntityDocument private static readonly LeaseSortBuilder SortBuilder = new(); - public static readonly string[] HoistedFieldNames = { nameof(Scope), nameof(Label), nameof(Value) }; - public string Scope { get; init; } = default!; public string Label { get; init; } = default!; public string Value { get; init; } = default!; diff --git a/src/EntityDb.MongoDb/Documents/TagDocument.cs b/src/EntityDb.MongoDb/Documents/TagDocument.cs index 82052aba..181168b1 100644 --- a/src/EntityDb.MongoDb/Documents/TagDocument.cs +++ b/src/EntityDb.MongoDb/Documents/TagDocument.cs @@ -20,8 +20,6 @@ internal sealed record TagDocument : DocumentBase, IEntityDocument private static readonly TagSortBuilder SortBuilder = new(); - public static readonly string[] HoistedFieldNames = { nameof(Label), nameof(Value) }; - public string Label { get; init; } = default!; public string Value { get; init; } = default!; public Id EntityId { get; init; } diff --git a/src/EntityDb.MongoDb/Queries/FilterBuilders/AgentSignatureFilterBuilder.cs b/src/EntityDb.MongoDb/Queries/FilterBuilders/AgentSignatureFilterBuilder.cs index 9d0a68ae..1f3aa150 100644 --- a/src/EntityDb.MongoDb/Queries/FilterBuilders/AgentSignatureFilterBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/FilterBuilders/AgentSignatureFilterBuilder.cs @@ -3,8 +3,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.FilterBuilders; @@ -20,12 +18,4 @@ public FilterDefinition AgentSignatureTypeIn(params Type[] agentSi { return DataTypeIn(agentSignatureTypes); } - - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public FilterDefinition AgentSignatureMatches( - Expression> agentSignatureExpression) - { - return DataValueMatches(agentSignatureExpression); - } } diff --git a/src/EntityDb.MongoDb/Queries/FilterBuilders/CommandFilterBuilder.cs b/src/EntityDb.MongoDb/Queries/FilterBuilders/CommandFilterBuilder.cs index 8972e58a..a0aba557 100644 --- a/src/EntityDb.MongoDb/Queries/FilterBuilders/CommandFilterBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/FilterBuilders/CommandFilterBuilder.cs @@ -3,8 +3,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.FilterBuilders; @@ -30,12 +28,4 @@ public FilterDefinition CommandTypeIn(params Type[] commandTypes) { return DataTypeIn(commandTypes); } - - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public FilterDefinition CommandMatches( - Expression> commandExpression) - { - return DataValueMatches(commandExpression); - } } diff --git a/src/EntityDb.MongoDb/Queries/FilterBuilders/FilterBuilderBase.cs b/src/EntityDb.MongoDb/Queries/FilterBuilders/FilterBuilderBase.cs index 9d663b9d..aa694f53 100644 --- a/src/EntityDb.MongoDb/Queries/FilterBuilders/FilterBuilderBase.cs +++ b/src/EntityDb.MongoDb/Queries/FilterBuilders/FilterBuilderBase.cs @@ -2,11 +2,8 @@ using EntityDb.Abstractions.ValueObjects; using EntityDb.Common.Envelopes; using EntityDb.MongoDb.Documents; -using EntityDb.MongoDb.Queries.FilterDefinitions; using MongoDB.Bson; using MongoDB.Driver; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.FilterBuilders; @@ -75,19 +72,4 @@ protected static FilterDefinition DataTypeIn(params Type[] dataTyp return FilterBuilder.In(DataTypeNameFieldName, typeNames); } - - protected virtual string[] GetHoistedFieldNames() - { - return Array.Empty(); - } - - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - protected FilterDefinition DataValueMatches(Expression> dataExpression) - { - var dataFilter = Builders.Filter.Where(dataExpression); - - return new EmbeddedFilterDefinition(DataValueFieldName, dataFilter, - GetHoistedFieldNames()); - } } diff --git a/src/EntityDb.MongoDb/Queries/FilterBuilders/LeaseFilterBuilder.cs b/src/EntityDb.MongoDb/Queries/FilterBuilders/LeaseFilterBuilder.cs index d5db785d..7d3f15b5 100644 --- a/src/EntityDb.MongoDb/Queries/FilterBuilders/LeaseFilterBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/FilterBuilders/LeaseFilterBuilder.cs @@ -3,8 +3,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.FilterBuilders; @@ -44,16 +42,4 @@ public FilterDefinition LeaseValueEq(string value) { return Eq(nameof(LeaseDocument.Value), value); } - - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public FilterDefinition LeaseMatches(Expression> leaseExpression) - { - return DataValueMatches(leaseExpression); - } - - protected override string[] GetHoistedFieldNames() - { - return LeaseDocument.HoistedFieldNames; - } } diff --git a/src/EntityDb.MongoDb/Queries/FilterBuilders/TagFilterBuilder.cs b/src/EntityDb.MongoDb/Queries/FilterBuilders/TagFilterBuilder.cs index 4d27c204..d1dced25 100644 --- a/src/EntityDb.MongoDb/Queries/FilterBuilders/TagFilterBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/FilterBuilders/TagFilterBuilder.cs @@ -3,8 +3,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.FilterBuilders; @@ -39,16 +37,4 @@ public FilterDefinition TagValueEq(string value) { return Eq(nameof(TagDocument.Value), value); } - - [Obsolete("This method will be removed in the future, and may not be supported for all implementations.")] - [ExcludeFromCodeCoverage(Justification = "Obsolete")] - public FilterDefinition TagMatches(Expression> tagExpression) - { - return DataValueMatches(tagExpression); - } - - protected override string[] GetHoistedFieldNames() - { - return TagDocument.HoistedFieldNames; - } } diff --git a/src/EntityDb.MongoDb/Queries/FilterDefinitions/EmbeddedFilterDefinition.cs b/src/EntityDb.MongoDb/Queries/FilterDefinitions/EmbeddedFilterDefinition.cs deleted file mode 100644 index ff510fbe..00000000 --- a/src/EntityDb.MongoDb/Queries/FilterDefinitions/EmbeddedFilterDefinition.cs +++ /dev/null @@ -1,45 +0,0 @@ -using EntityDb.MongoDb.Rewriters; -using MongoDB.Bson; -using MongoDB.Bson.IO; -using MongoDB.Bson.Serialization; -using MongoDB.Driver; -using MongoDB.Driver.Linq; - -namespace EntityDb.MongoDb.Queries.FilterDefinitions; - -internal sealed class - EmbeddedFilterDefinition : FilterDefinition -{ - private readonly FilterDefinition _childFilter; - private readonly string[] _hoistedFieldNames; - private readonly FieldDefinition _parentField; - - public EmbeddedFilterDefinition(FieldDefinition parentField, - FilterDefinition childFilter, string[] hoistedFieldNames) - { - _parentField = parentField; - _childFilter = childFilter; - _hoistedFieldNames = hoistedFieldNames; - } - - public override BsonDocument Render(IBsonSerializer parentDocumentSerializer, - IBsonSerializerRegistry bsonSerializerRegistry, LinqProvider linqProvider) - { - var renderedParentField = _parentField.Render(parentDocumentSerializer, bsonSerializerRegistry, linqProvider); - - var childDocumentSerializer = bsonSerializerRegistry.GetSerializer(); - - var renderedChildFilter = _childFilter.Render(childDocumentSerializer, bsonSerializerRegistry, linqProvider); - - var document = new BsonDocument(); - - using var bsonWriter = new BsonDocumentWriter(document); - - var embeddedFilterRewriter = - new HoistedRewriter(bsonWriter, renderedParentField.FieldName, _hoistedFieldNames); - - embeddedFilterRewriter.Rewrite(renderedChildFilter); - - return document; - } -} diff --git a/src/EntityDb.MongoDb/Queries/SortBuilders/AgentSignatureSortBuilder.cs b/src/EntityDb.MongoDb/Queries/SortBuilders/AgentSignatureSortBuilder.cs index 7a85b8df..1f48ab08 100644 --- a/src/EntityDb.MongoDb/Queries/SortBuilders/AgentSignatureSortBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/SortBuilders/AgentSignatureSortBuilder.cs @@ -2,7 +2,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.SortBuilders; @@ -18,10 +17,4 @@ public SortDefinition AgentSignatureType(bool ascending) { return SortDataType(ascending); } - - public SortDefinition AgentSignatureProperty(bool ascending, - Expression> agentSignatureExpression) - { - return SortDataValue(ascending, agentSignatureExpression); - } } diff --git a/src/EntityDb.MongoDb/Queries/SortBuilders/CommandSortBuilder.cs b/src/EntityDb.MongoDb/Queries/SortBuilders/CommandSortBuilder.cs index 8f16ed01..09ea7c43 100644 --- a/src/EntityDb.MongoDb/Queries/SortBuilders/CommandSortBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/SortBuilders/CommandSortBuilder.cs @@ -2,7 +2,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.SortBuilders; @@ -22,10 +21,4 @@ public SortDefinition CommandType(bool ascending) { return SortDataType(ascending); } - - public SortDefinition CommandProperty(bool ascending, - Expression> commandExpression) - { - return SortDataValue(ascending, commandExpression); - } } diff --git a/src/EntityDb.MongoDb/Queries/SortBuilders/LeaseSortBuilder.cs b/src/EntityDb.MongoDb/Queries/SortBuilders/LeaseSortBuilder.cs index 342185c0..06d56232 100644 --- a/src/EntityDb.MongoDb/Queries/SortBuilders/LeaseSortBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/SortBuilders/LeaseSortBuilder.cs @@ -2,7 +2,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.SortBuilders; @@ -23,12 +22,6 @@ public SortDefinition LeaseType(bool ascending) return SortDataType(ascending); } - public SortDefinition LeaseProperty(bool ascending, - Expression> leaseExpression) - { - return SortDataValue(ascending, leaseExpression); - } - public SortDefinition LeaseScope(bool ascending) { return Sort(ascending, nameof(LeaseDocument.Scope)); @@ -43,9 +36,4 @@ public SortDefinition LeaseValue(bool ascending) { return Sort(ascending, nameof(LeaseDocument.Value)); } - - protected override string[] GetHoistedFieldNames() - { - return LeaseDocument.HoistedFieldNames; - } } diff --git a/src/EntityDb.MongoDb/Queries/SortBuilders/SortBuilderBase.cs b/src/EntityDb.MongoDb/Queries/SortBuilders/SortBuilderBase.cs index 503ab422..0a1a38f1 100644 --- a/src/EntityDb.MongoDb/Queries/SortBuilders/SortBuilderBase.cs +++ b/src/EntityDb.MongoDb/Queries/SortBuilders/SortBuilderBase.cs @@ -1,9 +1,7 @@ using EntityDb.Abstractions.Queries.SortBuilders; using EntityDb.MongoDb.Documents; -using EntityDb.MongoDb.Queries.SortDefinitions; using MongoDB.Bson; using MongoDB.Driver; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.SortBuilders; @@ -42,15 +40,4 @@ protected virtual string[] GetHoistedFieldNames() { return Array.Empty(); } - - protected SortDefinition SortDataValue(bool ascending, - Expression> dataExpression) - { - var dataSort = ascending - ? Builders.Sort.Ascending(dataExpression) - : Builders.Sort.Descending(dataExpression); - - return new EmbeddedSortDefinition(DataValueFieldName, dataSort, - GetHoistedFieldNames()); - } } diff --git a/src/EntityDb.MongoDb/Queries/SortBuilders/TagSortBuilder.cs b/src/EntityDb.MongoDb/Queries/SortBuilders/TagSortBuilder.cs index 9f80c7fe..12c62d79 100644 --- a/src/EntityDb.MongoDb/Queries/SortBuilders/TagSortBuilder.cs +++ b/src/EntityDb.MongoDb/Queries/SortBuilders/TagSortBuilder.cs @@ -2,7 +2,6 @@ using EntityDb.MongoDb.Documents; using MongoDB.Bson; using MongoDB.Driver; -using System.Linq.Expressions; namespace EntityDb.MongoDb.Queries.SortBuilders; @@ -23,12 +22,6 @@ public SortDefinition TagType(bool ascending) return SortDataType(ascending); } - public SortDefinition TagProperty(bool ascending, - Expression> leaseExpression) - { - return SortDataValue(ascending, leaseExpression); - } - public SortDefinition TagLabel(bool ascending) { return Sort(ascending, nameof(TagDocument.Label)); @@ -38,9 +31,4 @@ public SortDefinition TagValue(bool ascending) { return Sort(ascending, nameof(TagDocument.Value)); } - - protected override string[] GetHoistedFieldNames() - { - return TagDocument.HoistedFieldNames; - } } diff --git a/src/EntityDb.MongoDb/Queries/SortDefinitions/EmbeddedSortDefinition.cs b/src/EntityDb.MongoDb/Queries/SortDefinitions/EmbeddedSortDefinition.cs deleted file mode 100644 index 80024df2..00000000 --- a/src/EntityDb.MongoDb/Queries/SortDefinitions/EmbeddedSortDefinition.cs +++ /dev/null @@ -1,44 +0,0 @@ -using EntityDb.MongoDb.Rewriters; -using MongoDB.Bson; -using MongoDB.Bson.IO; -using MongoDB.Bson.Serialization; -using MongoDB.Driver; -using MongoDB.Driver.Linq; - -namespace EntityDb.MongoDb.Queries.SortDefinitions; - -internal class EmbeddedSortDefinition : SortDefinition -{ - private readonly SortDefinition _childSort; - private readonly string[] _hoistedFieldNames; - private readonly FieldDefinition _parentField; - - public EmbeddedSortDefinition(FieldDefinition parentField, - SortDefinition childSort, string[] hoistedFieldNames) - { - _parentField = parentField; - _childSort = childSort; - _hoistedFieldNames = hoistedFieldNames; - } - - public override BsonDocument Render(IBsonSerializer parentDocumentSerializer, - IBsonSerializerRegistry bsonSerializerRegistry, LinqProvider linqProvider) - { - var renderedParentField = _parentField.Render(parentDocumentSerializer, bsonSerializerRegistry, linqProvider); - - var childDocumentSerializer = bsonSerializerRegistry.GetSerializer(); - - var renderedChildSort = _childSort.Render(childDocumentSerializer, bsonSerializerRegistry, linqProvider); - - var document = new BsonDocument(); - - using var bsonWriter = new BsonDocumentWriter(document); - - var embeddedSortRewriter = - new HoistedRewriter(bsonWriter, renderedParentField.FieldName, _hoistedFieldNames); - - embeddedSortRewriter.Rewrite(renderedChildSort); - - return document; - } -} diff --git a/src/EntityDb.MongoDb/Rewriters/BsonDocumentRewriter.cs b/src/EntityDb.MongoDb/Rewriters/BsonDocumentRewriter.cs deleted file mode 100644 index 93375aa6..00000000 --- a/src/EntityDb.MongoDb/Rewriters/BsonDocumentRewriter.cs +++ /dev/null @@ -1,107 +0,0 @@ -using MongoDB.Bson; -using MongoDB.Bson.IO; - -namespace EntityDb.MongoDb.Rewriters; - -internal class BsonDocumentRewriter -{ - protected readonly BsonWriter BsonWriter; - - public BsonDocumentRewriter(BsonWriter bsonWriter) - { - BsonWriter = bsonWriter; - } - - public void Rewrite(BsonValue bsonValue) - { - switch (bsonValue.BsonType) - { - case BsonType.Array: - RewriteArray(bsonValue.AsBsonArray.ToArray()); - break; - - case BsonType.Document: - RewriteDocument(bsonValue.AsBsonDocument.ToArray()); - break; - - default: - RewriteScalar(bsonValue); - break; - } - } - - private void RewriteArray(IEnumerable bsonValues) - { - BsonWriter.WriteStartArray(); - - foreach (var bsonValue in bsonValues) - { - Rewrite(bsonValue); - } - - BsonWriter.WriteEndArray(); - } - - protected virtual void RewriteDocument(BsonElement[] bsonElements) - { - BsonWriter.WriteStartDocument(); - - foreach (var bsonElement in bsonElements) - { - BsonWriter.WriteName(bsonElement.Name); - - Rewrite(bsonElement.Value); - } - - BsonWriter.WriteEndDocument(); - } - - private void RewriteScalar(BsonValue bsonValue) - { - switch (bsonValue.BsonType) - { - case BsonType.Double: - BsonWriter.WriteDouble(bsonValue.AsDouble); - break; - - case BsonType.String: - BsonWriter.WriteString(bsonValue.AsString); - break; - - case BsonType.Boolean: - BsonWriter.WriteBoolean(bsonValue.AsBoolean); - break; - - case BsonType.DateTime: - BsonWriter.WriteDateTime(bsonValue.AsBsonDateTime.MillisecondsSinceEpoch); - break; - - case BsonType.Null: - BsonWriter.WriteNull(); - break; - - case BsonType.RegularExpression: - BsonWriter.WriteRegularExpression(bsonValue.AsBsonRegularExpression); - break; - - case BsonType.Int32: - BsonWriter.WriteInt32(bsonValue.AsInt32); - break; - - case BsonType.Timestamp: - BsonWriter.WriteTimestamp(bsonValue.AsBsonTimestamp.Value); - break; - - case BsonType.Int64: - BsonWriter.WriteInt64(bsonValue.AsInt64); - break; - - case BsonType.Decimal128: - BsonWriter.WriteDecimal128(bsonValue.AsDecimal128); - break; - - default: - throw new NotSupportedException(); - } - } -} diff --git a/src/EntityDb.MongoDb/Rewriters/HoistedRewriter.cs b/src/EntityDb.MongoDb/Rewriters/HoistedRewriter.cs deleted file mode 100644 index 0fe95422..00000000 --- a/src/EntityDb.MongoDb/Rewriters/HoistedRewriter.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MongoDB.Bson; -using MongoDB.Bson.IO; - -namespace EntityDb.MongoDb.Rewriters; - -internal class HoistedRewriter : BsonDocumentRewriter -{ - private readonly string[] _hoistedFieldNames; - private readonly string _parentFieldName; - - private bool _foundTopDocument; - - public HoistedRewriter(BsonWriter bsonWriter, string parentFieldName, string[] hoistedFieldNames) : - base(bsonWriter) - { - _parentFieldName = parentFieldName; - _hoistedFieldNames = hoistedFieldNames; - } - - protected override void RewriteDocument(BsonElement[] bsonElements) - { - if (_foundTopDocument) - { - base.RewriteDocument(bsonElements); - } - else - { - _foundTopDocument = true; - - RewriteHoisted(bsonElements); - } - } - - private void RewriteHoisted(IEnumerable bsonElements) - { - BsonWriter.WriteStartDocument(); - - foreach (var bsonElement in bsonElements) - { - if (_hoistedFieldNames.Contains(bsonElement.Name)) - { - BsonWriter.WriteName(bsonElement.Name); - } - else - { - BsonWriter.WriteName(_parentFieldName + "." + bsonElement.Name); - } - - Rewrite(bsonElement.Value); - } - - BsonWriter.WriteEndDocument(); - } -} diff --git a/test/EntityDb.MongoDb.Tests/Rewriters/BsonDocumentRewriterTests.cs b/test/EntityDb.MongoDb.Tests/Rewriters/BsonDocumentRewriterTests.cs deleted file mode 100644 index 7793d5e1..00000000 --- a/test/EntityDb.MongoDb.Tests/Rewriters/BsonDocumentRewriterTests.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System.Text.RegularExpressions; -using EntityDb.MongoDb.Rewriters; -using MongoDB.Bson; -using MongoDB.Bson.IO; -using Shouldly; -using Xunit; - -namespace EntityDb.MongoDb.Tests.Rewriters; - -public class BsonDocumentRewriterTests -{ - private static BsonDocument CreateSubDocument() - { - return new BsonDocument - { - ["Double"] = BsonDouble.Create(0.0), - ["String"] = BsonString.Create(""), - ["Boolean"] = BsonBoolean.True, - ["TimeStamp"] = BsonDateTime.Create(DateTime.UtcNow), - ["Null"] = BsonNull.Value, - ["RegularExpression"] = BsonRegularExpression.Create(new Regex("$abc^")), - ["Int32"] = BsonInt32.Create(0), - ["Timestamp"] = - BsonTimestamp.Create(Convert.ToInt64((DateTime.UtcNow - DateTime.UnixEpoch).TotalSeconds)), - ["Int64"] = BsonInt64.Create((long)0), - ["Decimal128"] = BsonDecimal128.Create((decimal)0.0) - }; - } - - [Fact] - public void CanRewriteFullBsonDocument() - { - // ARRANGE - - var originalBsonDocument = new BsonDocument - { - ["Document"] = CreateSubDocument(), - ["Array"] = new BsonArray { CreateSubDocument(), CreateSubDocument() } - }; - - var expectedBson = originalBsonDocument.ToBson(); - - var copyBsonDocument = new BsonDocument(); - - using var bsonWriter = new BsonDocumentWriter(copyBsonDocument); - - var bsonDocumentRewriter = new BsonDocumentRewriter(bsonWriter); - - // ACT - - bsonDocumentRewriter.Rewrite(originalBsonDocument); - - var actualBson = copyBsonDocument.ToBson(); - - // ASSERT - - actualBson.SequenceEqual(expectedBson).ShouldBeTrue(); - } - - [Fact] - public void CannotWriteBsonDocumentWithJavaScript() - { - // ARRANGE - - var originalBsonDocument = new BsonDocument - { - ["JavaScript"] = BsonJavaScript.Create("function() { return true; }"), - ["JavaScriptWithScope"] = BsonJavaScriptWithScope.Create("function(a) { return true; }") - }; - - var copyBsonDocument = new BsonDocument(); - - using var bsonWriter = new BsonDocumentWriter(copyBsonDocument); - - var bsonDocumentRewriter = new BsonDocumentRewriter(bsonWriter); - - // ASSERT - - Should.Throw(() => { bsonDocumentRewriter.Rewrite(originalBsonDocument); }); - } -} \ No newline at end of file From cb92941aa67b4808268e29dd2f7e7f886dca9375 Mon Sep 17 00:00:00 2001 From: Chris Philips Date: Sun, 2 Oct 2022 14:39:08 -0700 Subject: [PATCH 2/2] Empty Commit