Skip to content

Commit 801b471

Browse files
committed
fix chain configuratior
1 parent 16af659 commit 801b471

2 files changed

Lines changed: 21 additions & 40 deletions

File tree

src/MapperAI.Core/Chains/ChainConfigurator.cs

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using MapperAI.Core.Chains.Interfaces;
33
using MapperAI.Core.Chains.Payloads;
44
using MapperAI.Core.Enums;
5-
using MapperAI.Core.Extensions.Utils;
65

76
namespace MapperAI.Core.Chains
87
{
@@ -12,51 +11,42 @@ public static IDictionary<HandlerType, IHandler> GetHandlers()
1211
{
1312
return new Dictionary<HandlerType, IHandler>
1413
{
15-
{ HandlerType.Filter, GetConfiguredHandlers(GetFilters()) },
16-
{ HandlerType.Payload, GetConfiguredHandlers(GetPayloads()) }
14+
{ HandlerType.Filter, BuildChain(GetFilters()) },
15+
{ HandlerType.Payload, BuildChain(GetPayloads()) }
1716
};
1817
}
1918

20-
private static T GetConfiguredHandlers<T>(Queue<T> handlers)
19+
private static T BuildChain<T>(IEnumerable<T> handlers)
2120
where T : class, IHandler
2221
{
23-
var firstHandler = handlers.Dequeue();
24-
if (handlers.Count > 0)
22+
var handlerList = handlers.ToList();
23+
if (handlerList.Count == 0)
24+
throw new InvalidOperationException("No handlers provided to build the chain.");
25+
26+
for (int i = 0; i < handlerList.Count - 1; i++)
2527
{
26-
return BuildHandlers(firstHandler, null, handlers);
28+
handlerList[i].SetNext(handlerList[i + 1]);
2729
}
28-
return firstHandler;
29-
}
30-
private static T BuildHandlers<T>(T firstHandler, T? lastHandler, Queue<T> handlers)
31-
where T : class, IHandler
32-
{
33-
var handler = handlers.DequeueOrDefault();
34-
if (handler == null)
35-
return firstHandler;
36-
37-
if (lastHandler == null)
38-
firstHandler.SetNext(handler);
39-
else
40-
lastHandler.SetNext(handler);
4130

42-
lastHandler = handler;
43-
return BuildHandlers(firstHandler, lastHandler, handlers);
31+
return handlerList[0];
4432
}
45-
private static Queue<IFilterHandler> GetFilters()
33+
34+
private static IEnumerable<IFilterHandler> GetFilters()
4635
{
47-
return new Queue<IFilterHandler>(
48-
[
36+
return new List<IFilterHandler>
37+
{
4938
new GeminiFilter(),
5039
new OllamaFilter()
51-
]);
40+
};
5241
}
53-
private static Queue<IPayloadHandler> GetPayloads()
42+
43+
private static IEnumerable<IPayloadHandler> GetPayloads()
5444
{
55-
return new Queue<IPayloadHandler>(
56-
[
45+
return new List<IPayloadHandler>
46+
{
5747
new GeminiPayload(),
5848
new OllamaPayload()
59-
]);
49+
};
6050
}
61-
}
51+
}
6252
}

src/MapperAI.Core/Extensions/Utils/QueueExtensions.cs

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)