using adas_core.Domain.Models.Filter;
using adas_core.Domain.Models.MongoModels;
using MongoDB.Bson;
using MongoDB.Driver;

namespace adas_core.Application.Repositories.Interfaces;

public interface IUserRepository : IMongoRepository<User>
{
    Task<User?> GetUser(string username, string password);
    Task<User?> GetById(ObjectId id);
    Task<User?> GetByUserName(string name);
    Task<User?> GetByName(string name);
    Task<User?> GetByUserAndAuthoritesName(string name);
    Task<User?> UpdateUser(User user, bool updatePass);
    IFindFluent<User, User> GetPaginatedUsers(PaginationFilter filter);
    Task<User> GetOrCreateSystemUser();
}