diff --git a/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj b/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj index 452047bfa..50b9eddca 100644 --- a/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj +++ b/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj @@ -8,7 +8,10 @@ True - + + all + runtime; build; native; contentfiles; analyzers + diff --git a/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj b/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj index 9df26a770..84cb6b779 100644 --- a/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj +++ b/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj @@ -19,13 +19,13 @@ - + - + ..\..\Squidex.ruleset diff --git a/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FindExtensions.cs b/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FindExtensions.cs index de6b94581..dd1c462b6 100644 --- a/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FindExtensions.cs +++ b/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FindExtensions.cs @@ -12,6 +12,7 @@ using System.Reflection; using Microsoft.OData.UriParser; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Driver; +using NodaTime; using Squidex.Domain.Apps.Core.Contents; using Squidex.Domain.Apps.Core.GenerateEdmSchema; using Squidex.Domain.Apps.Core.Schemas; @@ -27,6 +28,18 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Visitors typeof(MongoContentEntity).GetProperties() .ToDictionary(x => x.Name, x => x.GetCustomAttribute()?.ElementName ?? x.Name, StringComparer.OrdinalIgnoreCase); + public static readonly ConvertValue ValueConverter = (field, value) => + { + if (value is Instant instant && + !string.Equals(field, "mt", StringComparison.OrdinalIgnoreCase) && + !string.Equals(field, "ct", StringComparison.OrdinalIgnoreCase)) + { + return instant.ToString(); + } + + return value; + }; + public static ConvertProperty CreatePropertyCalculator(Schema schema, bool useDraft) { return propertyNames => @@ -98,7 +111,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Visitors filters.Add(Filter.In(x => x.Status, status)); } - var filter = query.BuildFilter(propertyCalculator); + var filter = query.BuildFilter(propertyCalculator, ValueConverter); if (filter.Filter != null) { diff --git a/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj b/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj index d70c35d48..189476831 100644 --- a/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj +++ b/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj b/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj index 293a7d718..094f6faea 100644 --- a/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj +++ b/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj b/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj index a617824d4..6db508fa1 100644 --- a/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj +++ b/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj b/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj index 1157914fe..e631ec0f4 100644 --- a/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj +++ b/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/Squidex.Infrastructure.MongoDb/MongoDb/OData/ConstantVisitor.cs b/src/Squidex.Infrastructure.MongoDb/MongoDb/OData/ConstantVisitor.cs index 482d6a7c1..d7784a059 100644 --- a/src/Squidex.Infrastructure.MongoDb/MongoDb/OData/ConstantVisitor.cs +++ b/src/Squidex.Infrastructure.MongoDb/MongoDb/OData/ConstantVisitor.cs @@ -6,6 +6,7 @@ // ========================================================================== using System; +using Microsoft.OData; using Microsoft.OData.Edm; using Microsoft.OData.UriParser; using NodaTime; @@ -51,7 +52,24 @@ namespace Squidex.Infrastructure.MongoDb.OData return Instant.FromDateTimeOffset(dateTimeOffset); } - return InstantPattern.General.Parse(Visit(nodeIn.Source).ToString()).Value; + if (value is DateTime dateTime) + { + return Instant.FromDateTimeUtc(DateTime.SpecifyKind(dateTime, DateTimeKind.Utc)); + } + + if (value is Date date) + { + return Instant.FromUtc(date.Year, date.Month, date.Day, 0, 0); + } + + var parseResult = InstantPattern.General.Parse(Visit(nodeIn.Source).ToString()); + + if (!parseResult.Success) + { + throw new ODataException("Datetime is not in a valid format. Use ISO 8601"); + } + + return parseResult.Value; } return base.Visit(nodeIn); diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index 4cda53d93..d399ebe31 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -58,30 +58,30 @@ - + - + - + - + - + - + diff --git a/src/Squidex/app/features/content/shared/field-editor.component.html b/src/Squidex/app/features/content/shared/field-editor.component.html index 6ba9ecc81..b2bb38f56 100644 --- a/src/Squidex/app/features/content/shared/field-editor.component.html +++ b/src/Squidex/app/features/content/shared/field-editor.component.html @@ -29,12 +29,12 @@ - +
- +
@@ -62,12 +62,12 @@ - +
- +
@@ -121,4 +121,4 @@ {{hints}} - \ No newline at end of file + diff --git a/src/Squidex/app/features/settings/pages/plans/plans-page.component.html b/src/Squidex/app/features/settings/pages/plans/plans-page.component.html index 84f11db59..a554ae036 100644 --- a/src/Squidex/app/features/settings/pages/plans/plans-page.component.html +++ b/src/Squidex/app/features/settings/pages/plans/plans-page.component.html @@ -17,7 +17,7 @@
- You have not created the subscription. Therefore you cannot change the planInfo.plan. + You have not created the subscription. Therefore you cannot change the plan.
@@ -85,4 +85,4 @@ - \ No newline at end of file + diff --git a/src/Squidex/appsettings.json b/src/Squidex/appsettings.json index 825264806..6a588f94d 100644 --- a/src/Squidex/appsettings.json +++ b/src/Squidex/appsettings.json @@ -168,11 +168,7 @@ * Prefix for all streams and projections (for multiple installations). */ "prefix": "squidex" - }, - /* - * Consume the events on this server (Ensure that it is only enabled on a single node). - */ - "consume": true + } }, "eventPublishers": { @@ -245,4 +241,4 @@ */ "privacyUrl": "https://squidex.io/privacy" } -} \ No newline at end of file +} diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj b/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj index 005b89848..e0144c1a4 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj +++ b/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj @@ -10,14 +10,17 @@ - + - + - - + + + all + runtime; build; native; contentfiles; analyzers + ..\..\Squidex.ruleset diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/OData/ODataQueryTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/OData/ODataQueryTests.cs index 8c7b9ae61..96aa25515 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/OData/ODataQueryTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/OData/ODataQueryTests.cs @@ -95,6 +95,15 @@ namespace Squidex.Domain.Apps.Entities.Contents.OData Assert.Equal(o, i); } + [Fact] + public void Should_make_query_with_created_and_date() + { + var i = F("$filter=created eq 1988-01-19"); + var o = C("{ 'ct' : ISODate('1988-01-19T00:00:00Z') }"); + + Assert.Equal(o, i); + } + [Fact] public void Should_make_query_with_createdBy() { @@ -216,7 +225,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.OData public void Should_make_query_with_datetime_equals() { var i = F("$filter=data/birthday/iv eq 1988-01-19T12:00:00Z"); - var o = C("{ 'do.5.iv' : ISODate('1988-01-19T12:00:00Z') }"); + var o = C("{ 'do.5.iv' : '1988-01-19T12:00:00Z' }"); Assert.Equal(o, i); } @@ -430,7 +439,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.OData var parser = edmModel.ParseQuery(value); var query = - parser.BuildFilter(FindExtensions.CreatePropertyCalculator(schemaDef, false)) + parser.BuildFilter(FindExtensions.CreatePropertyCalculator(schemaDef, false), FindExtensions.ValueConverter) .Filter.Render(Serializer, Registry).ToString(); return query; diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj b/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj index a936764da..45f9a5357 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj @@ -19,16 +19,19 @@ - + - - + + - - + + + all + runtime; build; native; contentfiles; analyzers + ..\..\Squidex.ruleset diff --git a/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj b/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj index 2a1d35175..7f5c5bb06 100644 --- a/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj +++ b/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj @@ -11,14 +11,17 @@ - + - + - - + + + all + runtime; build; native; contentfiles; analyzers + ..\..\Squidex.ruleset diff --git a/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj b/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj index 39f6455df..a8236f785 100644 --- a/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj +++ b/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj @@ -11,17 +11,20 @@ - + - + - - + + + all + runtime; build; native; contentfiles; analyzers + ..\..\Squidex.ruleset diff --git a/tests/Squidex.Tests/Squidex.Tests.csproj b/tests/Squidex.Tests/Squidex.Tests.csproj index 1293bb584..0a1243e99 100644 --- a/tests/Squidex.Tests/Squidex.Tests.csproj +++ b/tests/Squidex.Tests/Squidex.Tests.csproj @@ -10,15 +10,18 @@ - + - - + + - - + + + all + runtime; build; native; contentfiles; analyzers + ..\..\Squidex.ruleset