From 3ed6b5863e27ba95b835fdfaa9c6b9e3d3969a14 Mon Sep 17 00:00:00 2001 From: Quin Lynch Date: Sat, 9 Mar 2024 23:26:15 -0400 Subject: [PATCH] compact debug view --- .../Examples/QueryBuilder.cs | 46 ------------------- .../Compiled/DebugCompiledQuery.cs | 21 +++++++-- .../Extensions/RangeExtensions.cs | 9 ++++ 3 files changed, 25 insertions(+), 51 deletions(-) create mode 100644 src/EdgeDB.Net.QueryBuilder/Extensions/RangeExtensions.cs diff --git a/examples/EdgeDB.Examples.CSharp/Examples/QueryBuilder.cs b/examples/EdgeDB.Examples.CSharp/Examples/QueryBuilder.cs index d4f491be..98bf8468 100644 --- a/examples/EdgeDB.Examples.CSharp/Examples/QueryBuilder.cs +++ b/examples/EdgeDB.Examples.CSharp/Examples/QueryBuilder.cs @@ -32,52 +32,6 @@ public async Task ExecuteAsync(EdgeDBClient client) { try { - // depth of 4 - var data = new Person[] - { - new Person - { - Email = "test1@mail.com", - Name = "test1", - }, - new Person - { - Email = "test2@mail.com", - Name = "test2", - BestFriend = new Person - { - Email = "test3@mail.com", - Name = "test3", - Friends = new List() - { - new Person() - { - Name = "test4", - Email = "test4@mail.com", - BestFriend = new Person() - { - Name = "test4.1", - Email = "test4.1@mail.com" - } - }, - new Person() - { - Name = "test5", - Email = "test5@mail.com", - BestFriend = new Person() - { - Name = "test5.1", - Email = "test5.1@mail.com" - } - } - } - } - } - }; - - var query = await QueryBuilder.For(data, - x => QueryBuilder.Insert(x) - ).CompileAsync(client, true); await QueryBuilderDemo(client); } catch (Exception x) diff --git a/src/EdgeDB.Net.QueryBuilder/Compiled/DebugCompiledQuery.cs b/src/EdgeDB.Net.QueryBuilder/Compiled/DebugCompiledQuery.cs index d72260ff..b913fb72 100644 --- a/src/EdgeDB.Net.QueryBuilder/Compiled/DebugCompiledQuery.cs +++ b/src/EdgeDB.Net.QueryBuilder/Compiled/DebugCompiledQuery.cs @@ -160,11 +160,11 @@ private static string CreateDebugText(string query, Dictionary else { sb.AppendLine(query); - sb.AppendLine(); } if (variables.Count > 0) { + sb.AppendLine(); sb.AppendLine("Variables: "); foreach (var (name, value) in variables) @@ -178,20 +178,29 @@ private static string CreateDebugText(string query, Dictionary private static List> CreateMarkerView(LinkedList spans) { - var ordered = new Queue(spans.OrderBy(x => x.Range.End.Value - x.Range.Start.Value)); // order by 'size' + var orderedTemp = spans.OrderBy(x => x.Range.End.Value - x.Range.Start.Value).ToList(); + var ordered = new Queue(orderedTemp); // order by 'size' var result = new List>(); var row = new List(); while (ordered.TryDequeue(out var span)) { - var head = row.LastOrDefault(); - if (head is null) + foreach (var prevRow in result) + { + if (prevRow.All(y => !span.Range.Overlaps(y.Range))) + { + prevRow.Add(span); + goto end_iter; + } + } + + if (row.Count == 0) { row.Add(span); continue; } - if (head.Range.End.Value >= span.Range.Start.Value) + if (row.Any(x => x.Range.Overlaps(span.Range))) { // overlap result.Add(row); @@ -200,6 +209,8 @@ private static List> CreateMarkerView(LinkedList span } row.Add(span); + + end_iter: ; } result.Add(row); diff --git a/src/EdgeDB.Net.QueryBuilder/Extensions/RangeExtensions.cs b/src/EdgeDB.Net.QueryBuilder/Extensions/RangeExtensions.cs new file mode 100644 index 00000000..dcda0c94 --- /dev/null +++ b/src/EdgeDB.Net.QueryBuilder/Extensions/RangeExtensions.cs @@ -0,0 +1,9 @@ +namespace EdgeDB; + +public static class RangeExtensions +{ + public static bool Overlaps(this Range a, Range b) + { + return a.Start.Value < b.End.Value && b.Start.Value < a.End.Value; + } +}