diff --git a/AMessanger.Application/AMessanger.Application.csproj b/AMessanger.Application/AMessanger.Application.csproj index 4022601..368bf78 100644 --- a/AMessanger.Application/AMessanger.Application.csproj +++ b/AMessanger.Application/AMessanger.Application.csproj @@ -8,6 +8,7 @@ + diff --git a/AMessanger.DataAccess/AMessanger.DataAccess.csproj b/AMessanger.DataAccess/AMessanger.DataAccess.csproj new file mode 100644 index 0000000..520ff22 --- /dev/null +++ b/AMessanger.DataAccess/AMessanger.DataAccess.csproj @@ -0,0 +1,13 @@ + + + + net10.0 + enable + enable + + + + + + + diff --git a/AMessanger.DataAccess/Entities/UserEntity.cs b/AMessanger.DataAccess/Entities/UserEntity.cs new file mode 100644 index 0000000..5247702 --- /dev/null +++ b/AMessanger.DataAccess/Entities/UserEntity.cs @@ -0,0 +1,8 @@ +namespace AMessanger.DataAccess.Entities; + +public class UserEntity(Guid id, string name, string hashedPassword) +{ + public Guid Id { get; set; } = id; + public string Name { get; set; } = name; + public string HashedPassword { get; set; } = hashedPassword; +} \ No newline at end of file diff --git a/AMessanger.DataAccess/Repositories/UsersRepository.cs b/AMessanger.DataAccess/Repositories/UsersRepository.cs new file mode 100644 index 0000000..a53a3c3 --- /dev/null +++ b/AMessanger.DataAccess/Repositories/UsersRepository.cs @@ -0,0 +1,65 @@ +using AMessanger.Core; +using AMessanger.Core.Abstraction; +using AMessanger.Core.DTO; +using AMessanger.Core.Models; +using AMessanger.DataAccess.Entities; + +namespace AMessanger.DataAccess.Repositories; + +public class UsersRepository : IUsersRepository +{ + private static readonly List sUsers = []; + + public Task> AddAsync(User user, CancellationToken cancellationToken = default) + { + sUsers.Add(new(user.Id, user.Name, user.HashedPassword)); + + return Task.FromResult(Result.Success(user.Id)); + } + + public Task> DeleteAsync(Guid id, CancellationToken cancellationToken = default) + { + var user = sUsers.Find(u => u.Id == id); + if (user == null) + return Task.FromResult(Result.Error("Not found")); + + sUsers.Remove(user); + return Task.FromResult(Result.Success(user.Id)); + } + + public Task>> GetAllAsync(CancellationToken cancellationToken = default) + { + return Task.FromResult( + Result>.Success( + sUsers.Select(u => new User(u.Id, u.Name, u.HashedPassword)) + ) + ); + } + + public Task> GetByIdAsync(Guid id, CancellationToken cancellationToken = default) + { + var user = sUsers.Find(u => u.Id == id); + if (user == null) + return Task.FromResult(Result.Error("Not found")); + + return Task.FromResult( + Result.Success(new User(user.Id, user.Name, user.HashedPassword)) + ); + } + + public Task> GetByUserNameAsync(string userName, CancellationToken cancellationToken = default) + { + var user = sUsers.Find(u => u.Name.Equals(userName, StringComparison.InvariantCultureIgnoreCase)); + if (user == null) + return Task.FromResult(Result.Error("Not found")); + + return Task.FromResult( + Result.Success(new User(user.Id, user.Name, user.HashedPassword)) + ); + } + + public Task> UpdateAsync(Guid id, UpdateUserDto dto, CancellationToken cancellationToken = default) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AMessanger.slnx b/AMessanger.slnx index 4ae8611..f229aa9 100644 --- a/AMessanger.slnx +++ b/AMessanger.slnx @@ -6,4 +6,5 @@ +