@@ -42,60 +42,6 @@ public IReadOnlyCollection<ResourceFieldChainExpression> GetRelationshipChains(I
42
42
return converter . Chains ;
43
43
}
44
44
45
- /// <summary>
46
- /// Converts a set of relationship chains into a tree of inclusions.
47
- /// </summary>
48
- /// <example>
49
- /// Input chains: <code><![CDATA[
50
- /// Article -> Blog,
51
- /// Article -> Revisions -> Author
52
- /// ]]></code> Output tree:
53
- /// <code><![CDATA[
54
- /// Article
55
- /// {
56
- /// Blog,
57
- /// Revisions
58
- /// {
59
- /// Author
60
- /// }
61
- /// }
62
- /// ]]></code>
63
- /// </example>
64
- public IncludeExpression FromRelationshipChains ( IEnumerable < ResourceFieldChainExpression > chains )
65
- {
66
- ArgumentGuard . NotNull ( chains , nameof ( chains ) ) ;
67
-
68
- IImmutableSet < IncludeElementExpression > elements = ConvertChainsToElements ( chains ) ;
69
- return elements . Any ( ) ? new IncludeExpression ( elements ) : IncludeExpression . Empty ;
70
- }
71
-
72
- private static IImmutableSet < IncludeElementExpression > ConvertChainsToElements ( IEnumerable < ResourceFieldChainExpression > chains )
73
- {
74
- var rootNode = new MutableIncludeNode ( null ! ) ;
75
-
76
- foreach ( ResourceFieldChainExpression chain in chains )
77
- {
78
- ConvertChainToElement ( chain , rootNode ) ;
79
- }
80
-
81
- return rootNode . Children . Values . Select ( child => child . ToExpression ( ) ) . ToImmutableHashSet ( ) ;
82
- }
83
-
84
- private static void ConvertChainToElement ( ResourceFieldChainExpression chain , MutableIncludeNode rootNode )
85
- {
86
- MutableIncludeNode currentNode = rootNode ;
87
-
88
- foreach ( RelationshipAttribute relationship in chain . Fields . OfType < RelationshipAttribute > ( ) )
89
- {
90
- if ( ! currentNode . Children . ContainsKey ( relationship ) )
91
- {
92
- currentNode . Children [ relationship ] = new MutableIncludeNode ( relationship ) ;
93
- }
94
-
95
- currentNode = currentNode . Children [ relationship ] ;
96
- }
97
- }
98
-
99
45
private sealed class IncludeToChainsConverter : QueryExpressionVisitor < object ? , object ? >
100
46
{
101
47
private readonly Stack < RelationshipAttribute > _parentRelationshipStack = new ( ) ;
@@ -144,22 +90,4 @@ private void FlushChain(IncludeElementExpression expression)
144
90
Chains . Add ( new ResourceFieldChainExpression ( chainBuilder . ToImmutable ( ) ) ) ;
145
91
}
146
92
}
147
-
148
- private sealed class MutableIncludeNode
149
- {
150
- private readonly RelationshipAttribute _relationship ;
151
-
152
- public IDictionary < RelationshipAttribute , MutableIncludeNode > Children { get ; } = new Dictionary < RelationshipAttribute , MutableIncludeNode > ( ) ;
153
-
154
- public MutableIncludeNode ( RelationshipAttribute relationship )
155
- {
156
- _relationship = relationship ;
157
- }
158
-
159
- public IncludeElementExpression ToExpression ( )
160
- {
161
- IImmutableSet < IncludeElementExpression > elementChildren = Children . Values . Select ( child => child . ToExpression ( ) ) . ToImmutableHashSet ( ) ;
162
- return new IncludeElementExpression ( _relationship , elementChildren ) ;
163
- }
164
- }
165
93
}
0 commit comments