using AssetManager.Data;
using AssetManager.Models.DTOs;
namespace AssetManager.Data.Repositories;
///
/// 投资组合仓储接口
///
public interface IPortfolioRepository
{
// ===== Portfolio =====
Task GetByIdAsync(string id, string userId);
Task> GetByUserIdAsync(string userId);
Task CreateAsync(Portfolio portfolio);
Task UpdateAsync(Portfolio portfolio);
Task DeleteAsync(string id, string userId);
// ===== Position =====
Task> GetPositionsByPortfolioIdAsync(string portfolioId);
Task GetPositionAsync(string portfolioId, string stockCode);
Task CreatePositionAsync(Position position);
Task UpdatePositionAsync(Position position);
Task DeletePositionAsync(string positionId);
// ===== Transaction =====
Task> GetTransactionsAsync(string portfolioId, int limit, int offset);
Task GetTransactionCountAsync(string portfolioId);
Task CreateTransactionAsync(Transaction transaction);
// ===== NavHistory =====
Task> GetNavHistoryAsync(string portfolioId, DateTime? startDate, DateTime? endDate);
Task DeleteNavHistoryAfterDateAsync(string portfolioId, DateTime date);
Task CreateNavHistoryBatchAsync(List records);
}