diff --git a/AMessanger.Core/Abstraction/IAccountService.cs b/AMessanger.Core/Abstraction/IAccountService.cs new file mode 100644 index 0000000..d7bc8ff --- /dev/null +++ b/AMessanger.Core/Abstraction/IAccountService.cs @@ -0,0 +1,11 @@ +using AMessanger.Core.DTO; +using AMessanger.Core.Models; + +namespace AMessanger.Core.Abstraction; + +public interface IAccountService +{ + public Task> RegisterAsync(CreateUserDto dto, CancellationToken cancellationToken = default); + + public Task> LoginAsync(string userName, string password, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/AMessanger.Core/Abstraction/IUserService.cs b/AMessanger.Core/Abstraction/IUserService.cs new file mode 100644 index 0000000..8ba766a --- /dev/null +++ b/AMessanger.Core/Abstraction/IUserService.cs @@ -0,0 +1,19 @@ +using AMessanger.Core.DTO; +using AMessanger.Core.Models; + +namespace AMessanger.Core.Abstraction; + +public interface IUserService +{ + public Task> CreateAsync(CreateUserDto dto, CancellationToken cancellationToken = default); + + public Task> GetByIdAsync(Guid id, CancellationToken cancellationToken = default); + + public Task> GetByUserNameAsync(string userName, CancellationToken cancellationToken = default); + + public Task>> GetAllAsync(CancellationToken cancellationToken = default); + + public Task> UpdateAsync(Guid id, UpdateUserDto dto, CancellationToken cancellationToken = default); + + public Task> DeleteAsync(Guid id, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/AMessanger.Core/Abstraction/IUsersRepository.cs b/AMessanger.Core/Abstraction/IUsersRepository.cs new file mode 100644 index 0000000..6d730ff --- /dev/null +++ b/AMessanger.Core/Abstraction/IUsersRepository.cs @@ -0,0 +1,19 @@ +using AMessanger.Core.Models; +using AMessanger.Core.DTO; + +namespace AMessanger.Core.Abstraction; + +public interface IUsersRepository +{ + public Task> AddAsync(User user, CancellationToken cancellationToken = default); + + public Task> GetByIdAsync(Guid id, CancellationToken cancellationToken = default); + + public Task> GetByUserNameAsync(string userName, CancellationToken cancellationToken = default); + + public Task>> GetAllAsync(CancellationToken cancellationToken = default); + + public Task> UpdateAsync(Guid id, UpdateUserDto dto, CancellationToken cancellationToken = default); + + public Task> DeleteAsync(Guid id, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/AMessanger.Core/DTO/CreateUserDto.cs b/AMessanger.Core/DTO/CreateUserDto.cs new file mode 100644 index 0000000..083e9c8 --- /dev/null +++ b/AMessanger.Core/DTO/CreateUserDto.cs @@ -0,0 +1,6 @@ +namespace AMessanger.Core.DTO; + +public record class CreateUserDto( + string Name, + string Password +); \ No newline at end of file diff --git a/AMessanger.Core/DTO/UpdateUserDto.cs b/AMessanger.Core/DTO/UpdateUserDto.cs new file mode 100644 index 0000000..94cbbb1 --- /dev/null +++ b/AMessanger.Core/DTO/UpdateUserDto.cs @@ -0,0 +1,6 @@ +namespace AMessanger.Core.DTO; + +public record class UpdateUserDto( + string? Name, + string? Password +); \ No newline at end of file diff --git a/AMessanger.Core/Result.cs b/AMessanger.Core/Result.cs new file mode 100644 index 0000000..03fe9ae --- /dev/null +++ b/AMessanger.Core/Result.cs @@ -0,0 +1,21 @@ +namespace AMessanger.Core; + +public class Result +{ + public T? Value { get; } + + public string? ErrorMessage { get; } + + public bool IsSuccess { get; } + + private Result(T? value, bool isSuccess, string? message) + { + Value = value; + IsSuccess = isSuccess; + ErrorMessage = message; + } + + public static Result Error(string message) => new(default, false, message); + + public static Result Success(T value) => new(value, true, null); +} \ No newline at end of file