From 78ee8fbca1d6b50efd94dacb9e1e4dd5bd2e4a70 Mon Sep 17 00:00:00 2001 From: Matthias Gernand Date: Tue, 7 Jun 2022 17:03:30 +0200 Subject: [PATCH] Updated packages. (#5) --- README.md | 17 +++++++++++++++++ .../ConventionPackExtensions.cs | 8 ++++++++ .../DateOnlyDateTimeOffsetSerializer.cs | 7 +++++++ .../DateOnlyDateTimeSerializer.cs | 7 +++++++ .../DateOnlySerializer.cs | 5 +++++ .../Fluxera.Temporal.MongoDB.csproj | 6 +++--- .../TimeOnlySerializer.cs | 5 +++++ src/Fluxera.Temporal/Fluxera.Temporal.csproj | 6 +++--- .../DateOnlyDateTimeOffsetTests.cs | 2 +- .../DateOnlyDateTimeTests.cs | 2 +- .../DateOnlyTests.cs | 2 +- .../Fluxera.Temporal.MongoDB.UnitTests.csproj | 4 +--- .../TimeOnlyTests.cs | 2 +- 13 files changed, 60 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index cffecbf..4566a88 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,20 @@ # Fluxera.Temporal A libary that provides temporal types. + + +## Serialization Support + +At the moment serialization support is available for: + +- [MongoDB](https://github.com/mongodb/mongo-csharp-driver) + +### MongoDB + +To support the temporal serializers in MongoDB use the ```UseTemporal``` extension method on a ```ConventionPack```. + +```C# +ConventionPack pack = new ConventionPack(); +pack.UseTemporal(); +ConventionRegistry.Register("ConventionPack", pack, t => true); +``` diff --git a/src/Fluxera.Temporal.MongoDB/ConventionPackExtensions.cs b/src/Fluxera.Temporal.MongoDB/ConventionPackExtensions.cs index f762335..4420094 100644 --- a/src/Fluxera.Temporal.MongoDB/ConventionPackExtensions.cs +++ b/src/Fluxera.Temporal.MongoDB/ConventionPackExtensions.cs @@ -3,9 +3,17 @@ using global::MongoDB.Bson.Serialization.Conventions; using JetBrains.Annotations; + /// + /// Extension methods for the type. + /// [PublicAPI] public static class ConventionPackExtensions { + /// + /// Configures the database to use the temporal serializers. + /// + /// + /// public static ConventionPack UseTemporal(this ConventionPack pack) { pack.Add(new DateTimeConvention()); diff --git a/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeOffsetSerializer.cs b/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeOffsetSerializer.cs index 73afcce..d1d1e27 100644 --- a/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeOffsetSerializer.cs +++ b/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeOffsetSerializer.cs @@ -5,11 +5,18 @@ using global::MongoDB.Bson.Serialization.Serializers; using JetBrains.Annotations; + /// + /// A that only serializes the date part. + /// [PublicAPI] public class DateOnlyDateTimeOffsetSerializer : DateTimeOffsetSerializer { private readonly DateTimeSerializer dateTimeSerializer; + /// + /// Initializes a new instance of the . + /// + /// public DateOnlyDateTimeOffsetSerializer(DateTimeSerializer dateTimeSerializer) { this.dateTimeSerializer = dateTimeSerializer; diff --git a/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeSerializer.cs b/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeSerializer.cs index 9b8434f..5291495 100644 --- a/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeSerializer.cs +++ b/src/Fluxera.Temporal.MongoDB/DateOnlyDateTimeSerializer.cs @@ -5,11 +5,18 @@ using global::MongoDB.Bson.Serialization.Serializers; using JetBrains.Annotations; + /// + /// A that only serializes the date part. + /// [PublicAPI] public class DateOnlyDateTimeSerializer : DateTimeSerializer { private readonly DateTimeSerializer dateTimeSerializer; + /// + /// Initializes a new instance of the type. + /// + /// public DateOnlyDateTimeSerializer(DateTimeSerializer dateTimeSerializer) { this.dateTimeSerializer = dateTimeSerializer; diff --git a/src/Fluxera.Temporal.MongoDB/DateOnlySerializer.cs b/src/Fluxera.Temporal.MongoDB/DateOnlySerializer.cs index f1cc6b7..b61edb7 100644 --- a/src/Fluxera.Temporal.MongoDB/DateOnlySerializer.cs +++ b/src/Fluxera.Temporal.MongoDB/DateOnlySerializer.cs @@ -5,14 +5,19 @@ using global::MongoDB.Bson.Serialization.Serializers; using JetBrains.Annotations; + /// + /// A serializer for the type. + /// [PublicAPI] public class DateOnlySerializer : StructSerializerBase { + /// public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, DateOnly value) { context.Writer.WriteString(value.ToString("yyyy-MM-dd")); } + /// public override DateOnly Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) { return DateOnly.ParseExact(context.Reader.ReadString(), "yyyy-MM-dd", null); diff --git a/src/Fluxera.Temporal.MongoDB/Fluxera.Temporal.MongoDB.csproj b/src/Fluxera.Temporal.MongoDB/Fluxera.Temporal.MongoDB.csproj index 20e32df..720274b 100644 --- a/src/Fluxera.Temporal.MongoDB/Fluxera.Temporal.MongoDB.csproj +++ b/src/Fluxera.Temporal.MongoDB/Fluxera.Temporal.MongoDB.csproj @@ -22,13 +22,13 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/Fluxera.Temporal.MongoDB/TimeOnlySerializer.cs b/src/Fluxera.Temporal.MongoDB/TimeOnlySerializer.cs index 0531b46..c826acc 100644 --- a/src/Fluxera.Temporal.MongoDB/TimeOnlySerializer.cs +++ b/src/Fluxera.Temporal.MongoDB/TimeOnlySerializer.cs @@ -5,16 +5,21 @@ using global::MongoDB.Bson.Serialization.Serializers; using JetBrains.Annotations; + /// + /// A serializer for the type. + /// [PublicAPI] public class TimeOnlySerializer : StructSerializerBase { private readonly TimeSpanSerializer timeSpanSerializer = new TimeSpanSerializer(); + /// public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, TimeOnly value) { this.timeSpanSerializer.Serialize(context, args, value.ToTimeSpan()); } + /// public override TimeOnly Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) { TimeSpan timeSpan = this.timeSpanSerializer.Deserialize(context, args); diff --git a/src/Fluxera.Temporal/Fluxera.Temporal.csproj b/src/Fluxera.Temporal/Fluxera.Temporal.csproj index ad0782f..2a6f35c 100644 --- a/src/Fluxera.Temporal/Fluxera.Temporal.csproj +++ b/src/Fluxera.Temporal/Fluxera.Temporal.csproj @@ -22,9 +22,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeOffsetTests.cs b/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeOffsetTests.cs index 2ca05b5..ef27a5a 100644 --- a/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeOffsetTests.cs +++ b/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeOffsetTests.cs @@ -17,7 +17,7 @@ public void SetUp() { ConventionPack pack = new ConventionPack(); pack.UseTemporal(); - ConventionRegistry.Register("ConventionPack", pack, t => true); + ConventionRegistry.Register("ConventionPack", pack, _ => true); } private class TestClass diff --git a/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeTests.cs b/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeTests.cs index 362e2fb..9024817 100644 --- a/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeTests.cs +++ b/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyDateTimeTests.cs @@ -17,7 +17,7 @@ public void SetUp() { ConventionPack pack = new ConventionPack(); pack.UseTemporal(); - ConventionRegistry.Register("ConventionPack", pack, t => true); + ConventionRegistry.Register("ConventionPack", pack, _ => true); } private class TestClass diff --git a/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyTests.cs b/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyTests.cs index d5fc8b4..7f3f98e 100644 --- a/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyTests.cs +++ b/tests/Fluxera.Temporal.MongoDB.UnitTests/DateOnlyTests.cs @@ -16,7 +16,7 @@ public void SetUp() { ConventionPack pack = new ConventionPack(); pack.UseTemporal(); - ConventionRegistry.Register("ConventionPack", pack, t => true); + ConventionRegistry.Register("ConventionPack", pack, _ => true); } private class TestClass diff --git a/tests/Fluxera.Temporal.MongoDB.UnitTests/Fluxera.Temporal.MongoDB.UnitTests.csproj b/tests/Fluxera.Temporal.MongoDB.UnitTests/Fluxera.Temporal.MongoDB.UnitTests.csproj index d40d34f..b31e45c 100644 --- a/tests/Fluxera.Temporal.MongoDB.UnitTests/Fluxera.Temporal.MongoDB.UnitTests.csproj +++ b/tests/Fluxera.Temporal.MongoDB.UnitTests/Fluxera.Temporal.MongoDB.UnitTests.csproj @@ -2,9 +2,7 @@ net6.0 - enable - - false + false diff --git a/tests/Fluxera.Temporal.MongoDB.UnitTests/TimeOnlyTests.cs b/tests/Fluxera.Temporal.MongoDB.UnitTests/TimeOnlyTests.cs index e123332..5533a66 100644 --- a/tests/Fluxera.Temporal.MongoDB.UnitTests/TimeOnlyTests.cs +++ b/tests/Fluxera.Temporal.MongoDB.UnitTests/TimeOnlyTests.cs @@ -16,7 +16,7 @@ public void SetUp() { ConventionPack pack = new ConventionPack(); pack.UseTemporal(); - ConventionRegistry.Register("ConventionPack", pack, t => true); + ConventionRegistry.Register("ConventionPack", pack, _ => true); } private class TestClass