using Fengling.Console.Models.Entities;

namespace Fengling.Console.Repositories;

public interface IUserRepository
{
    Task<ApplicationUser?> GetByIdAsync(long id);
    Task<ApplicationUser?> GetByUserNameAsync(string userName);
    Task<IEnumerable<ApplicationUser>> GetAllAsync();
    Task<IEnumerable<ApplicationUser>> GetPagedAsync(int page, int pageSize, string? userName = null, string? email = null, string? tenantId = null);
    Task<int> CountAsync(string? userName = null, string? email = null, string? tenantId = null);
    Task AddAsync(ApplicationUser user);
    Task UpdateAsync(ApplicationUser user);
    Task DeleteAsync(ApplicationUser user);
}
