using Managing.Domain.MoneyManagements;
using Managing.Domain.Users;

namespace Managing.Application.Abstractions.Repositories;

public interface ISettingsRepository
{
    Task<MoneyManagement> GetMoneyManagement(string name);
    Task InsertMoneyManagement(MoneyManagement request);
    void UpdateMoneyManagement(MoneyManagement moneyManagement);
    IEnumerable<MoneyManagement> GetMoneyManagements();
    void DeleteMoneyManagement(string name);
    void DeleteMoneyManagements();
    
    // User-specific operations (these should eventually replace the above methods)
    Task<MoneyManagement> GetMoneyManagementByUser(User user, string name);
    IEnumerable<MoneyManagement> GetMoneyManagementsByUser(User user);
    void DeleteMoneyManagementByUser(User user, string name);
    void DeleteMoneyManagementsByUser(User user);
}
