Browse Source

Fix casting.

pull/1293/head
Sebastian Stehle 3 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()})";
}
var arg = formattedValue;
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)})";
}
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>
</PropertyGroup>
<ItemGroup>
<None Remove="Providers\Postgres\json_function.sql" />
<None Remove="Providers\SqlServer\json_function.sql" />
</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());
}
[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]
public async Task Should_filter_by_number_not_equal()
{

Loading…
Cancel
Save