From 914cdd998e105f263099b84a0d192a13c693caa2 Mon Sep 17 00:00:00 2001 From: ryzij Date: Mon, 31 Aug 2026 17:11:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D1=84=D0=B5=D0=B9=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Abstraction/IAccountService.cs | 11 ++++++++++ AMessanger.Core/Abstraction/IUserService.cs | 19 +++++++++++++++++ .../Abstraction/IUsersRepository.cs | 19 +++++++++++++++++ AMessanger.Core/DTO/CreateUserDto.cs | 6 ++++++ AMessanger.Core/DTO/UpdateUserDto.cs | 6 ++++++ AMessanger.Core/Result.cs | 21 +++++++++++++++++++ 6 files changed, 82 insertions(+) create mode 100644 AMessanger.Core/Abstraction/IAccountService.cs create mode 100644 AMessanger.Core/Abstraction/IUserService.cs create mode 100644 AMessanger.Core/Abstraction/IUsersRepository.cs create mode 100644 AMessanger.Core/DTO/CreateUserDto.cs create mode 100644 AMessanger.Core/DTO/UpdateUserDto.cs create mode 100644 AMessanger.Core/Result.cs 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