Browse Source

Fix casting.

pull/1293/head
Sebastian Stehle 7 months ago
parent
commit
59a021c33d
  1. 5
      backend/src/Squidex.Data.EntityFramework/Providers/MySql/JsonFunction.cs
  2. 15
      backend/src/Squidex.Data.EntityFramework/Providers/Postgres/JsonFunction.cs
  3. 1
      backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj
  4. 11
      backend/tests/Squidex.Data.Tests/EntityFramework/Infrastructure/Queries/EFQueryTests.cs

5
backend/src/Squidex.Data.EntityFramework/Providers/MySql/JsonFunction.cs

@ -111,11 +111,12 @@ public static class JsonFunction
return $"{fn}(`{path[0]}`, {path.JsonSubPath()})"; return $"{fn}(`{path[0]}`, {path.JsonSubPath()})";
} }
var arg = formattedValue;
if (value.IsList) if (value.IsList)
{ {
return $"{fn}(`{path[0]}`, {path.JsonSubPath()}, JSON_ARRAY({formattedValue}))"; arg = $"JSON_ARRAY({formattedValue})";
} }
return $"{fn}(`{path[0]}`, {path.JsonSubPath()}, {formattedValue})"; return $"{fn}(`{path[0]}`, {path.JsonSubPath()}, {arg})";
} }
} }

15
backend/src/Squidex.Data.EntityFramework/Providers/Postgres/JsonFunction.cs

@ -101,11 +101,20 @@ public static class JsonFunction
return $"{fn}({path.JsonPath(false)})"; return $"{fn}({path.JsonPath(false)})";
} }
if (value.IsList) var arg = formattedValue;
if (value.IsList && type == TypeNumber)
{ {
return $"{fn}({path.JsonPath(false)}, ARRAY[{formattedValue}])"; arg = $"ARRAY[{formattedValue}]::numeric[]";
}
else if (value.IsList)
{
arg = $"ARRAY[{formattedValue}]";
}
else if (type == TypeNumber)
{
arg = $"{formattedValue}::numeric";
} }
return $"{fn}({path.JsonPath(false)}, {formattedValue})"; return $"{fn}({path.JsonPath(false)}, {arg})";
} }
} }

1
backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj

@ -11,7 +11,6 @@
<DebugSymbols>True</DebugSymbols> <DebugSymbols>True</DebugSymbols>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<None Remove="Providers\Postgres\json_function.sql" />
<None Remove="Providers\SqlServer\json_function.sql" /> <None Remove="Providers\SqlServer\json_function.sql" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

11
backend/tests/Squidex.Data.Tests/EntityFramework/Infrastructure/Queries/EFQueryTests.cs

@ -384,6 +384,17 @@ public abstract class EFQueryTests<TContext>(ISqlFixture<TContext> fixture)
Assert.Equal([7], actual.Order().ToArray()); Assert.Equal([7], actual.Order().ToArray());
} }
[Fact]
public async Task Should_filter_by_number_equal_with_double()
{
var actual = await QueryAsync(new ClrQuery
{
Filter = ClrFilter.Eq("Number", 7.0),
});
Assert.Equal([7], actual.Order().ToArray());
}
[Fact] [Fact]
public async Task Should_filter_by_number_not_equal() public async Task Should_filter_by_number_not_equal()
{ {

Loading…
Cancel
Save