Files
managing-apps/src/Managing.Application.Abstractions/Repositories/IBacktestRepository.cs
2025-11-10 11:50:20 +07:00

78 lines
3.9 KiB
C#

using Managing.Application.Abstractions.Shared;
using Managing.Common;
using Managing.Domain.Backtests;
using Managing.Domain.Users;
namespace Managing.Application.Abstractions.Repositories;
public interface IBacktestRepository
{
void InsertBacktestForUser(User user, Backtest result);
Task InsertBacktestForUserAsync(User user, Backtest result);
IEnumerable<Backtest> GetBacktestsByUser(User user);
Task<IEnumerable<Backtest>> GetBacktestsByUserAsync(User user);
IEnumerable<Backtest> GetBacktestsByRequestId(Guid requestId);
Task<IEnumerable<Backtest>> GetBacktestsByRequestIdAsync(Guid requestId);
(IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByRequestIdPaginated(Guid requestId, int page,
int pageSize, string sortBy = "score", string sortOrder = "desc");
Task<(IEnumerable<LightBacktest> Backtests, int TotalCount)> GetBacktestsByRequestIdPaginatedAsync(Guid requestId,
int page,
int pageSize, string sortBy = "score", string sortOrder = "desc");
(IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(
User user,
int page,
int pageSize,
Enums.BacktestSortableColumn sortBy = Enums.BacktestSortableColumn.Score,
string sortOrder = "desc",
BacktestsFilter? filter = null);
Task<(IEnumerable<LightBacktest> Backtests, int TotalCount)> GetBacktestsByUserPaginatedAsync(
User user,
int page,
int pageSize,
Enums.BacktestSortableColumn sortBy = Enums.BacktestSortableColumn.Score,
string sortOrder = "desc",
BacktestsFilter? filter = null);
Task<Backtest> GetBacktestByIdForUserAsync(User user, string id);
Task DeleteBacktestByIdForUserAsync(User user, string id);
Task DeleteBacktestsByIdsForUserAsync(User user, IEnumerable<string> ids);
void DeleteAllBacktestsForUser(User user);
Task DeleteBacktestsByRequestIdAsync(Guid requestId);
Task<int> DeleteBacktestsByFiltersAsync(User user, BacktestsFilter filter);
// Bundle backtest methods
void InsertBundleBacktestRequestForUser(User user, BundleBacktestRequest bundleRequest);
Task InsertBundleBacktestRequestForUserAsync(User user, BundleBacktestRequest bundleRequest);
IEnumerable<BundleBacktestRequest> GetBundleBacktestRequestsByUser(User user);
Task<IEnumerable<BundleBacktestRequest>> GetBundleBacktestRequestsByUserAsync(User user);
BundleBacktestRequest? GetBundleBacktestRequestByIdForUser(User user, Guid id);
Task<BundleBacktestRequest?> GetBundleBacktestRequestByIdForUserAsync(User user, Guid id);
void UpdateBundleBacktestRequest(BundleBacktestRequest bundleRequest);
Task UpdateBundleBacktestRequestAsync(BundleBacktestRequest bundleRequest);
void DeleteBundleBacktestRequestByIdForUser(User user, Guid id);
Task DeleteBundleBacktestRequestByIdForUserAsync(User user, Guid id);
IEnumerable<BundleBacktestRequest> GetBundleBacktestRequestsByStatus(BundleBacktestRequestStatus status);
Task<IEnumerable<BundleBacktestRequest>> GetBundleBacktestRequestsByStatusAsync(BundleBacktestRequestStatus status);
// Admin methods - no user filter
(IEnumerable<BundleBacktestRequest> BundleRequests, int TotalCount) GetBundleBacktestRequestsPaginated(
int page,
int pageSize,
Enums.BundleBacktestRequestSortableColumn sortBy = Enums.BundleBacktestRequestSortableColumn.CreatedAt,
string sortOrder = "desc",
BundleBacktestRequestsFilter? filter = null);
Task<(IEnumerable<BundleBacktestRequest> BundleRequests, int TotalCount)> GetBundleBacktestRequestsPaginatedAsync(
int page,
int pageSize,
Enums.BundleBacktestRequestSortableColumn sortBy = Enums.BundleBacktestRequestSortableColumn.CreatedAt,
string sortOrder = "desc",
BundleBacktestRequestsFilter? filter = null);
// Admin summary methods
Task<BundleBacktestRequestSummary> GetBundleBacktestRequestsSummaryAsync();
}