Add stats for kaigen

This commit is contained in:
2025-04-24 22:40:10 +07:00
parent 86692b60fa
commit 1d14d31af2
13 changed files with 483 additions and 8 deletions

View File

@@ -0,0 +1,18 @@
using Managing.Application.Abstractions;
using MediatR;
namespace Managing.Application.ManageBot.Commands
{
/// <summary>
/// Command to retrieve all strategies owned by a specific user
/// </summary>
public class GetUserStrategiesCommand : IRequest<List<ITradingBot>>
{
public string UserName { get; }
public GetUserStrategiesCommand(string userName)
{
UserName = userName;
}
}
}

View File

@@ -0,0 +1,27 @@
using Managing.Application.Abstractions;
using MediatR;
namespace Managing.Application.ManageBot.Commands
{
/// <summary>
/// Command to retrieve a specific strategy owned by a user
/// </summary>
public class GetUserStrategyCommand : IRequest<ITradingBot>
{
/// <summary>
/// The username of the agent/user that owns the strategy
/// </summary>
public string AgentName { get; }
/// <summary>
/// The name of the strategy/bot to retrieve
/// </summary>
public string StrategyName { get; }
public GetUserStrategyCommand(string agentName, string strategyName)
{
AgentName = agentName;
StrategyName = strategyName;
}
}
}

View File

@@ -0,0 +1,26 @@
using Managing.Application.Abstractions;
using Managing.Application.ManageBot.Commands;
using MediatR;
namespace Managing.Application.ManageBot
{
public class GetUserStrategiesCommandHandler : IRequestHandler<GetUserStrategiesCommand, List<ITradingBot>>
{
private readonly IBotService _botService;
public GetUserStrategiesCommandHandler(IBotService botService)
{
_botService = botService;
}
public Task<List<ITradingBot>> Handle(GetUserStrategiesCommand request, CancellationToken cancellationToken)
{
var allActiveBots = _botService.GetActiveBots();
var userBots = allActiveBots
.Where(bot => bot.User != null && bot.User.Name == request.UserName)
.ToList();
return Task.FromResult(userBots);
}
}
}

View File

@@ -0,0 +1,33 @@
using Managing.Application.Abstractions;
using Managing.Application.ManageBot.Commands;
using MediatR;
namespace Managing.Application.ManageBot
{
/// <summary>
/// Handler for retrieving a specific strategy owned by a user
/// </summary>
public class GetUserStrategyCommandHandler : IRequestHandler<GetUserStrategyCommand, ITradingBot>
{
private readonly IBotService _botService;
public GetUserStrategyCommandHandler(IBotService botService)
{
_botService = botService;
}
public Task<ITradingBot> Handle(GetUserStrategyCommand request, CancellationToken cancellationToken)
{
var allActiveBots = _botService.GetActiveBots();
// Find the specific strategy that matches both user and strategy name
var strategy = allActiveBots
.FirstOrDefault(bot =>
bot.User != null &&
bot.User.Name == request.AgentName &&
bot.Name == request.StrategyName);
return Task.FromResult(strategy);
}
}
}