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 GetBacktestsByUser(User user); Task> GetBacktestsByUserAsync(User user); IEnumerable GetBacktestsByRequestId(Guid requestId); Task> GetBacktestsByRequestIdAsync(Guid requestId); (IEnumerable Backtests, int TotalCount) GetBacktestsByRequestIdPaginated(Guid requestId, int page, int pageSize, string sortBy = "score", string sortOrder = "desc"); Task<(IEnumerable Backtests, int TotalCount)> GetBacktestsByRequestIdPaginatedAsync(Guid requestId, int page, int pageSize, string sortBy = "score", string sortOrder = "desc"); (IEnumerable Backtests, int TotalCount) GetBacktestsByUserPaginated( User user, int page, int pageSize, Enums.BacktestSortableColumn sortBy = Enums.BacktestSortableColumn.Score, string sortOrder = "desc", BacktestsFilter? filter = null); Task<(IEnumerable Backtests, int TotalCount)> GetBacktestsByUserPaginatedAsync( User user, int page, int pageSize, Enums.BacktestSortableColumn sortBy = Enums.BacktestSortableColumn.Score, string sortOrder = "desc", BacktestsFilter? filter = null); Task GetBacktestByIdForUserAsync(User user, string id); Task DeleteBacktestByIdForUserAsync(User user, string id); Task DeleteBacktestsByIdsForUserAsync(User user, IEnumerable ids); void DeleteAllBacktestsForUser(User user); Task DeleteBacktestsByRequestIdAsync(Guid requestId); Task DeleteBacktestsByFiltersAsync(User user, BacktestsFilter filter); // Bundle backtest methods void InsertBundleBacktestRequestForUser(User user, BundleBacktestRequest bundleRequest); Task InsertBundleBacktestRequestForUserAsync(User user, BundleBacktestRequest bundleRequest); IEnumerable GetBundleBacktestRequestsByUser(User user); Task> GetBundleBacktestRequestsByUserAsync(User user); BundleBacktestRequest? GetBundleBacktestRequestByIdForUser(User user, Guid id); Task 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 GetBundleBacktestRequestsByStatus(BundleBacktestRequestStatus status); Task> GetBundleBacktestRequestsByStatusAsync(BundleBacktestRequestStatus status); // Admin methods - no user filter (IEnumerable BundleRequests, int TotalCount) GetBundleBacktestRequestsPaginated( int page, int pageSize, Enums.BundleBacktestRequestSortableColumn sortBy = Enums.BundleBacktestRequestSortableColumn.CreatedAt, string sortOrder = "desc", BundleBacktestRequestsFilter? filter = null); Task<(IEnumerable BundleRequests, int TotalCount)> GetBundleBacktestRequestsPaginatedAsync( int page, int pageSize, Enums.BundleBacktestRequestSortableColumn sortBy = Enums.BundleBacktestRequestSortableColumn.CreatedAt, string sortOrder = "desc", BundleBacktestRequestsFilter? filter = null); // Admin summary methods Task GetBundleBacktestRequestsSummaryAsync(); }