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

namespace Managing.Application.Abstractions.Repositories;

public interface ISettingsRepository
{
    Task<MoneyManagement> GetMoneyManagement(string name);
    Task InsertMoneyManagement(LightMoneyManagement request, User user);
    Task UpdateMoneyManagementAsync(LightMoneyManagement moneyManagement, User user);
    Task<IEnumerable<MoneyManagement>> GetMoneyManagementsAsync();
    Task DeleteMoneyManagementAsync(string name);
    Task DeleteMoneyManagementsAsync();

    // User-specific operations (these should eventually replace the above methods)
    Task<MoneyManagement> GetMoneyManagementByUser(User user, string name);
    Task<IEnumerable<MoneyManagement>> GetMoneyManagementsByUserAsync(User user);
    Task DeleteMoneyManagementByUserAsync(User user, string name);
    Task DeleteMoneyManagementsByUserAsync(User user);
}