From fe976623caf1c2e4462ff6824e52c8877c885c75 Mon Sep 17 00:00:00 2001 From: Richard Irons <115992270+RichardIrons-neo4j@users.noreply.github.com> Date: Thu, 22 Aug 2024 09:31:27 +0100 Subject: [PATCH] Add SCHEMA notification type (#813) --- .../Neo4j.Driver.Tests/ConfigTests.cs | 2 ++ .../SessionConfigBuilderTests.cs | 2 ++ .../Result/Summary/GqlStatusObject.cs | 1 + .../Internal/Result/Summary/Notification.cs | 1 + .../Public/Summary/NotificationCategory.cs | 7 +++++- .../Summary/NotificationClassification.cs | 5 ++++ .../Neo4j.Driver/Public/Types/Category.cs | 4 ++++ .../Public/Types/Classification.cs | 24 ++++++++++++------- 8 files changed, 36 insertions(+), 10 deletions(-) diff --git a/Neo4j.Driver/Neo4j.Driver.Tests/ConfigTests.cs b/Neo4j.Driver/Neo4j.Driver.Tests/ConfigTests.cs index e734fe8ff..2d9933c2d 100644 --- a/Neo4j.Driver/Neo4j.Driver.Tests/ConfigTests.cs +++ b/Neo4j.Driver/Neo4j.Driver.Tests/ConfigTests.cs @@ -249,6 +249,7 @@ public void WithTlsNegotiatorGeneric_ShouldSetTlsNegotiator() [InlineData(Classification.Deprecation, Category.Deprecation)] [InlineData(Classification.Security, Category.Security)] [InlineData(Classification.Topology, Category.Topology)] + [InlineData(Classification.Schema, Category.Schema)] [InlineData(Classification.Generic, Category.Generic)] public void WithNotifications_ShouldSetCategoryWithClassification( Classification classification, @@ -281,6 +282,7 @@ public void WithNotifications_ShouldSetCategoryWithClassification( [InlineData(Category.Deprecation, Category.Deprecation)] [InlineData(Category.Security, Category.Security)] [InlineData(Category.Topology, Category.Topology)] + [InlineData(Category.Schema, Category.Schema)] [InlineData(Category.Generic, Category.Generic)] public void WithNotifications_ShouldSetCategory( Category inCat, diff --git a/Neo4j.Driver/Neo4j.Driver.Tests/SessionConfigBuilderTests.cs b/Neo4j.Driver/Neo4j.Driver.Tests/SessionConfigBuilderTests.cs index 9a71515b5..27572b798 100644 --- a/Neo4j.Driver/Neo4j.Driver.Tests/SessionConfigBuilderTests.cs +++ b/Neo4j.Driver/Neo4j.Driver.Tests/SessionConfigBuilderTests.cs @@ -30,6 +30,7 @@ public class SessionConfigBuilderTests [InlineData(Classification.Deprecation, Category.Deprecation)] [InlineData(Classification.Security, Category.Security)] [InlineData(Classification.Topology, Category.Topology)] + [InlineData(Classification.Schema, Category.Schema)] [InlineData(Classification.Generic, Category.Generic)] public void WithNotifications_ShouldSetCategoryWithClassification( Classification classification, @@ -62,6 +63,7 @@ public void WithNotifications_ShouldSetCategoryWithClassification( [InlineData(Category.Deprecation, Category.Deprecation)] [InlineData(Category.Security, Category.Security)] [InlineData(Category.Topology, Category.Topology)] + [InlineData(Category.Schema, Category.Schema)] [InlineData(Category.Generic, Category.Generic)] public void WithNotifications_ShouldSetCategory( Category inCat, diff --git a/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/GqlStatusObject.cs b/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/GqlStatusObject.cs index c478129a4..de3de131e 100644 --- a/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/GqlStatusObject.cs +++ b/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/GqlStatusObject.cs @@ -66,6 +66,7 @@ private NotificationClassification ClassificationFrom(string rawClassification) "deprecation" => NotificationClassification.Deprecation, "security" => NotificationClassification.Security, "topology" => NotificationClassification.Topology, + "schema" => NotificationClassification.Schema, "generic" => NotificationClassification.Generic, _ => NotificationClassification.Unknown }; diff --git a/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/Notification.cs b/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/Notification.cs index 4bf0f8933..36e1da1f9 100644 --- a/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/Notification.cs +++ b/Neo4j.Driver/Neo4j.Driver/Internal/Result/Summary/Notification.cs @@ -58,6 +58,7 @@ private NotificationCategory ParseCategory(string category) "deprecation" => NotificationCategory.Deprecation, "security" => NotificationCategory.Security, "topology" => NotificationCategory.Topology, + "schema" => NotificationCategory.Schema, "generic" => NotificationCategory.Generic, _ => NotificationCategory.Unknown }; diff --git a/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationCategory.cs b/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationCategory.cs index 84bfe6ecf..1873c8a8e 100644 --- a/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationCategory.cs +++ b/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationCategory.cs @@ -46,10 +46,15 @@ public enum NotificationCategory Security, /// <summary> - /// Topology notifications provide additional information related to managing databases and servers. + /// Information provided while executing database and server related commands. /// </summary> Topology, + /// <summary> + /// Information provided while managing indexes and constraints. + /// </summary> + Schema, + /// <summary>Notification not covered by other categories.</summary> Generic } diff --git a/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationClassification.cs b/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationClassification.cs index e86f6a4c3..2ab608704 100644 --- a/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationClassification.cs +++ b/Neo4j.Driver/Neo4j.Driver/Public/Summary/NotificationClassification.cs @@ -55,6 +55,11 @@ public enum NotificationClassification /// </summary> Topology, + /// <summary> + /// Schema notifications provide additional information related to managing indexes and constraints. + /// </summary> + Schema, + /// <summary>Notification not covered by other categories.</summary> Generic } diff --git a/Neo4j.Driver/Neo4j.Driver/Public/Types/Category.cs b/Neo4j.Driver/Neo4j.Driver/Public/Types/Category.cs index 0a02238ba..8d1a8b563 100644 --- a/Neo4j.Driver/Neo4j.Driver/Public/Types/Category.cs +++ b/Neo4j.Driver/Neo4j.Driver/Public/Types/Category.cs @@ -59,6 +59,10 @@ public enum Category /// <remarks>Returned as <see cref="NotificationCategory.Topology"/></remarks> Topology, + /// <summary> Receive notifications related to managing indexes and constraints.</summary> + /// <remarks>Returned as <see cref="NotificationCategory.Schema"/></remarks> + Schema, + /// <summary>Receive notifications not covered by other categories.</summary> /// <remarks>Returned as <see cref="NotificationCategory.Generic"/></remarks> Generic diff --git a/Neo4j.Driver/Neo4j.Driver/Public/Types/Classification.cs b/Neo4j.Driver/Neo4j.Driver/Public/Types/Classification.cs index 6f385cf8c..daddd85e9 100644 --- a/Neo4j.Driver/Neo4j.Driver/Public/Types/Classification.cs +++ b/Neo4j.Driver/Neo4j.Driver/Public/Types/Classification.cs @@ -30,15 +30,15 @@ public enum Classification { /// <summary>Receive notifications when a hint in query cannot be satisfied.</summary> /// <remarks> - /// Returned as <see cref="NotificationClassification.Hint"/> in <see cref="IGqlStatusObject.Classification"/> as - /// <see cref="NotificationCategory.Hint"/> in <see cref="INotification.Category"/>. + /// Returned as <see cref="NotificationClassification.Hint"/> in <see cref="IGqlStatusObject.Classification"/> and + /// as <see cref="NotificationCategory.Hint"/> in <see cref="INotification.Category"/>. /// </remarks> Hint, /// <summary>Receive notifications when a query or command mentions entities that are unknown to the system.</summary> /// <remarks> /// Returned as <see cref="NotificationClassification.Unrecognized"/> in - /// <see cref="IGqlStatusObject.Classification"/> as <see cref="NotificationCategory.Unrecognized"/> in + /// <see cref="IGqlStatusObject.Classification"/> and as <see cref="NotificationCategory.Unrecognized"/> in /// <see cref="INotification.Category"/>. /// </remarks> Unrecognized, @@ -49,7 +49,7 @@ public enum Classification /// </summary> /// <remarks> /// Returned as <see cref="NotificationClassification.Unsupported"/> in - /// <see cref="IGqlStatusObject.Classification"/> as <see cref="NotificationCategory.Unsupported"/> in + /// <see cref="IGqlStatusObject.Classification"/> and as <see cref="NotificationCategory.Unsupported"/> in /// <see cref="INotification.Category"/>. /// </remarks> Unsupported, @@ -57,7 +57,7 @@ public enum Classification /// <summary>Receive notifications when a query uses costly operations and might be slow.</summary> /// <remarks> /// Returned as <see cref="NotificationClassification.Performance"/> in - /// <see cref="IGqlStatusObject.Classification"/> as <see cref="NotificationCategory.Performance"/> in + /// <see cref="IGqlStatusObject.Classification"/> and as <see cref="NotificationCategory.Performance"/> in /// <see cref="INotification.Category"/>. /// </remarks> Performance, @@ -65,7 +65,7 @@ public enum Classification /// <summary>Receive notifications when a query/command use deprecated features that should be replaced.</summary> /// <remarks> /// Returned as <see cref="NotificationClassification.Deprecation"/> in - /// <see cref="IGqlStatusObject.Classification"/> as <see cref="NotificationCategory.Deprecation"/> in + /// <see cref="IGqlStatusObject.Classification"/> and as <see cref="NotificationCategory.Deprecation"/> in /// <see cref="INotification.Category"/>. /// </remarks> Deprecation, @@ -73,21 +73,27 @@ public enum Classification /// <summary>Receive notifications when the result of the query or command indicates a potential security issue.</summary> /// <remarks> /// Returned as <see cref="NotificationClassification.Security"/> in <see cref="IGqlStatusObject.Classification"/> - /// as <see cref="NotificationCategory.Security"/> in <see cref="INotification.Category"/>. + /// and as <see cref="NotificationCategory.Security"/> in <see cref="INotification.Category"/>. /// </remarks> Security, /// <summary>Receive notifications related to managing databases and servers.</summary> /// <remarks> /// Returned as <see cref="NotificationClassification.Topology"/> in <see cref="IGqlStatusObject.Classification"/> - /// as <see cref="NotificationCategory.Topology"/> in <see cref="INotification.Category"/>. + /// and as <see cref="NotificationCategory.Topology"/> in <see cref="INotification.Category"/>. /// </remarks> Topology, + /// <summary>Receive notifications related to managing indexes and constraints.</summary> + /// <remarks> Returned as <see cref="NotificationClassification.Schema"/> in <see cref="IGqlStatusObject.Classification"/> + /// and as <see cref="NotificationCategory.Schema"/> in <see cref="INotification.Category"/>. + /// </remarks> + Schema, + /// <summary>Receive notifications not covered by other categories.</summary> /// <remarks> /// Returned as <see cref="NotificationClassification.Generic"/> in <see cref="IGqlStatusObject.Classification"/> - /// as <see cref="NotificationCategory.Generic"/> in <see cref="INotification.Category"/>. + /// and as <see cref="NotificationCategory.Generic"/> in <see cref="INotification.Category"/>. /// </remarks> Generic }