Skip to content

Commit dcdabeb

Browse files
translation layer and serialization changes
1 parent cb52182 commit dcdabeb

File tree

10 files changed

+764
-294
lines changed

10 files changed

+764
-294
lines changed

Magic.IndexedDb/IndexDbManager.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,15 +204,16 @@ internal IMagicDatabaseScoped Database(IndexedDbManager manager, IndexedDbSet in
204204
/// <param name="cancellationToken"></param>
205205
/// <returns></returns>
206206
internal async Task<IEnumerable<T>?> LinqToIndexedDb<T>(
207-
NestedOrFilter nestedOrFilter, MagicQuery<T> query,
207+
FilterNode nestedOrFilter, MagicQuery<T> query,
208208
CancellationToken cancellationToken) where T : class
209209
{
210-
if (nestedOrFilter.universalFalse == true)
211-
return default;
210+
//if (nestedOrFilter.universalFalse == true)
211+
// return default;
212+
212213
var args = new ITypedArgument[] {
213214
new TypedArgument<string>(query.DatabaseName),
214215
new TypedArgument<string>(query.SchemaName),
215-
new TypedArgument<NestedOrFilter>(nestedOrFilter),
216+
new TypedArgument<FilterNode>(nestedOrFilter),
216217
new TypedArgument<List<StoredMagicQuery>?>(query?.StoredMagicQueries),
217218
new TypedArgument<bool>(query?.ForceCursorMode??false),
218219
};
@@ -235,16 +236,14 @@ internal IMagicDatabaseScoped Database(IndexedDbManager manager, IndexedDbSet in
235236
/// <param name="cancellationToken"></param>
236237
/// <returns></returns>
237238
internal async IAsyncEnumerable<T?> LinqToIndexedDbYield<T>(
238-
NestedOrFilter nestedOrFilter, MagicQuery<T> query,
239+
FilterNode nestedOrFilter, MagicQuery<T> query,
239240
[EnumeratorCancellation] CancellationToken cancellationToken) where T : class
240241
{
241-
if (nestedOrFilter.universalFalse == true)
242-
yield break; // Terminate the async iterator immediately.
243242

244243
var args = new ITypedArgument[] {
245244
new TypedArgument<string>(query.DatabaseName),
246245
new TypedArgument<string>(query.SchemaName),
247-
new TypedArgument<NestedOrFilter>(nestedOrFilter),
246+
new TypedArgument<FilterNode>(nestedOrFilter),
248247
new TypedArgument<List<StoredMagicQuery>?>(query?.StoredMagicQueries),
249248
new TypedArgument<bool>(query?.ForceCursorMode??false),
250249
};

Magic.IndexedDb/LinqTranslation/Extensions/MagicQueryExtensions.cs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using System.Text.Json.Nodes;
1313
using System.Collections;
1414
using Magic.IndexedDb.Models.UniversalOperations;
15+
using Magic.IndexedDb.LinqTranslation.Models;
1516

1617
namespace Magic.IndexedDb.LinqTranslation.Extensions
1718
{
@@ -66,7 +67,7 @@ public async Task<IEnumerable<T>> WhereAsync(
6667
return items.Where(predicate.Compile()); // Apply predicate after materialization
6768
}
6869

69-
private NestedOrFilter nestedOrFilter { get => GetCollectedBinaryJsonExpressions(); }
70+
private FilterNode nestedOrFilter { get => GetCollectedBinaryJsonExpressions(); }
7071

7172
/// <summary>
7273
/// The order you apply does get applied correctly in the query,
@@ -209,26 +210,14 @@ private MemberExpression GetMemberExpressionFromLambda(Expression<Func<T, object
209210
}
210211
}
211212

212-
private NestedOrFilter GetCollectedBinaryJsonExpressions()
213+
private FilterNode GetCollectedBinaryJsonExpressions()
213214
{
214-
NestedOrFilter nestedOrFilter = new NestedOrFilter();
215215
Expression<Func<T, bool>> preprocessedPredicate = PreprocessPredicate();
216216

217-
// Check if the predicate is a universal false condition
218-
if (IsUniversalFalse(preprocessedPredicate))
219-
{
220-
return new NestedOrFilter { universalFalse = true };
221-
}
222-
223-
// FLATTEN OR CONDITIONS because they are annoying and IndexDB doesn't support that!
224-
var flattenedPredicate = ExpressionFlattener.FlattenAndOptimize(preprocessedPredicate);
225-
226-
var builder = new UniversalExpressionBuilder<T>(flattenedPredicate);
227-
nestedOrFilter = builder.Build();
228-
229217

230-
//CollectBinaryExpressions(flattenedPredicate.Body, flattenedPredicate, nestedOrFilter);
231-
return nestedOrFilter;
218+
var builder = new UniversalExpressionBuilder<T>(preprocessedPredicate);
219+
var result = builder.Build();
220+
return result;
232221
}
233222

234223

0 commit comments

Comments
 (0)