using Domain.Entities;
namespace Features.UserManagement.Repository;
///
/// Repository for CRUD operations on user account records.
///
public interface IUserAccountRepository
{
///
/// Retrieves a user account by its unique identifier, or null if not found.
///
Task GetByIdAsync(Guid id);
///
/// Retrieves all user accounts, optionally paginated.
///
/// null for no limit.
/// null for no offset.
Task> GetAllAsync(int? limit, int? offset);
/// Must have a valid UserAccountId.
Task UpdateAsync(UserAccount userAccount);
Task DeleteAsync(Guid id);
///
/// Retrieves a user account by username, or null if not found.
///
Task GetByUsernameAsync(string username);
///
/// Retrieves a user account by email address, or null if not found.
///
Task GetByEmailAsync(string email);
}