diff --git a/API/API.Core/Controllers/NotFoundController.cs b/API/API.Core/Controllers/NotFoundController.cs index 857694d..52fb2aa 100644 --- a/API/API.Core/Controllers/NotFoundController.cs +++ b/API/API.Core/Controllers/NotFoundController.cs @@ -4,10 +4,10 @@ namespace WebAPI.Controllers { [ApiController] [ApiExplorerSettings(IgnoreApi = true)] - [Route("error")] // ← required + [Route("error")] // required public class NotFoundController : ControllerBase { - [HttpGet("404")] // ← required + [HttpGet("404")] //required public IActionResult Handle404() { return NotFound(new { message = "Route not found." }); diff --git a/API/API.Core/Program.cs b/API/API.Core/Program.cs index 81bab8e..6d36b50 100644 --- a/API/API.Core/Program.cs +++ b/API/API.Core/Program.cs @@ -1,5 +1,6 @@ using BusinessLayer.Services; using DataAccessLayer.Repositories; +using DataAccessLayer.Repositories.UserAccount; using DataAccessLayer.Sql; var builder = WebApplication.CreateBuilder(args); diff --git a/Database/Database.Core/scripts/03-crud/02-UserCredential/USP_DeleteUserCredential.sql b/Database/Database.Core/scripts/03-crud/02-UserCredential/USP_DeleteUserCredential.sql new file mode 100644 index 0000000..e69de29 diff --git a/Database/Database.Core/scripts/03-crud/02-UserCredential/USP_GetUserCredentialByUserAccountId.sql b/Database/Database.Core/scripts/03-crud/02-UserCredential/USP_GetUserCredentialByUserAccountId.sql new file mode 100644 index 0000000..e69de29 diff --git a/Database/Database.Core/scripts/03-crud/02-UserCredential/USP_UpdateUserCredential.sql b/Database/Database.Core/scripts/03-crud/02-UserCredential/USP_UpdateUserCredential.sql new file mode 100644 index 0000000..e69de29 diff --git a/Repository/Repository.Core/Repositories/IUserAccountRepository.cs b/Repository/Repository.Core/Repositories/IUserAccountRepository.cs deleted file mode 100644 index ca18801..0000000 --- a/Repository/Repository.Core/Repositories/IUserAccountRepository.cs +++ /dev/null @@ -1,15 +0,0 @@ -using DataAccessLayer.Entities; - -namespace DataAccessLayer.Repositories -{ - public interface IUserAccountRepository - { - Task Add(UserAccount userAccount); - Task GetById(Guid id); - Task> GetAll(int? limit, int? offset); - Task Update(UserAccount userAccount); - Task Delete(Guid id); - Task GetByUsername(string username); - Task GetByEmail(string email); - } -} diff --git a/Repository/Repository.Core/Repositories/UserAccount/IUserAccountRepository.cs b/Repository/Repository.Core/Repositories/UserAccount/IUserAccountRepository.cs new file mode 100644 index 0000000..dd5b76b --- /dev/null +++ b/Repository/Repository.Core/Repositories/UserAccount/IUserAccountRepository.cs @@ -0,0 +1,15 @@ + + +namespace DataAccessLayer.Repositories.UserAccount +{ + public interface IUserAccountRepository + { + Task Add(Entities.UserAccount userAccount); + Task GetById(Guid id); + Task> GetAll(int? limit, int? offset); + Task Update(Entities.UserAccount userAccount); + Task Delete(Guid id); + Task GetByUsername(string username); + Task GetByEmail(string email); + } +} diff --git a/Repository/Repository.Core/Repositories/UserAccountRepository.cs b/Repository/Repository.Core/Repositories/UserAccount/UserAccountRepository.cs similarity index 87% rename from Repository/Repository.Core/Repositories/UserAccountRepository.cs rename to Repository/Repository.Core/Repositories/UserAccount/UserAccountRepository.cs index 40eb278..80ee038 100644 --- a/Repository/Repository.Core/Repositories/UserAccountRepository.cs +++ b/Repository/Repository.Core/Repositories/UserAccount/UserAccountRepository.cs @@ -1,14 +1,13 @@ -using DataAccessLayer.Entities; +using System.Data; using DataAccessLayer.Sql; using Microsoft.Data.SqlClient; -using System.Data; -namespace DataAccessLayer.Repositories +namespace DataAccessLayer.Repositories.UserAccount { public class UserAccountRepository(ISqlConnectionFactory connectionFactory) - : Repository(connectionFactory), IUserAccountRepository + : Repository(connectionFactory), IUserAccountRepository { - public override async Task Add(UserAccount userAccount) + public override async Task Add(Entities.UserAccount userAccount) { await using var connection = await CreateConnection(); await using var command = new SqlCommand("usp_CreateUserAccount", connection); @@ -24,7 +23,7 @@ namespace DataAccessLayer.Repositories await command.ExecuteNonQueryAsync(); } - public override async Task GetById(Guid id) + public override async Task GetById(Guid id) { await using var connection = await CreateConnection(); await using var command = new SqlCommand("usp_GetUserAccountById", connection) @@ -38,7 +37,7 @@ namespace DataAccessLayer.Repositories return await reader.ReadAsync() ? MapToEntity(reader) : null; } - public override async Task> GetAll(int? limit, int? offset) + public override async Task> GetAll(int? limit, int? offset) { await using var connection = await CreateConnection(); await using var command = new SqlCommand("usp_GetAllUserAccounts", connection); @@ -51,7 +50,7 @@ namespace DataAccessLayer.Repositories command.Parameters.Add("@Offset", SqlDbType.Int).Value = offset.Value; await using var reader = await command.ExecuteReaderAsync(); - var users = new List(); + var users = new List(); while (await reader.ReadAsync()) { @@ -61,7 +60,7 @@ namespace DataAccessLayer.Repositories return users; } - public override async Task Update(UserAccount userAccount) + public override async Task Update(Entities.UserAccount userAccount) { await using var connection = await CreateConnection(); await using var command = new SqlCommand("usp_UpdateUserAccount", connection); @@ -87,7 +86,7 @@ namespace DataAccessLayer.Repositories await command.ExecuteNonQueryAsync(); } - public async Task GetByUsername(string username) + public async Task GetByUsername(string username) { await using var connection = await CreateConnection(); await using var command = new SqlCommand("usp_GetUserAccountByUsername", connection); @@ -99,7 +98,7 @@ namespace DataAccessLayer.Repositories return await reader.ReadAsync() ? MapToEntity(reader) : null; } - public async Task GetByEmail(string email) + public async Task GetByEmail(string email) { await using var connection = await CreateConnection(); await using var command = new SqlCommand("usp_GetUserAccountByEmail", connection); @@ -111,9 +110,9 @@ namespace DataAccessLayer.Repositories return await reader.ReadAsync() ? MapToEntity(reader) : null; } - protected override UserAccount MapToEntity(SqlDataReader reader) + protected override Entities.UserAccount MapToEntity(SqlDataReader reader) { - return new UserAccount + return new Entities.UserAccount { UserAccountId = reader.GetGuid(reader.GetOrdinal("UserAccountId")), Username = reader.GetString(reader.GetOrdinal("Username")), diff --git a/Repository/Repository.Core/Repositories/UserCredential/IUserCredentialRepository.cs b/Repository/Repository.Core/Repositories/UserCredential/IUserCredentialRepository.cs new file mode 100644 index 0000000..9ac74c2 --- /dev/null +++ b/Repository/Repository.Core/Repositories/UserCredential/IUserCredentialRepository.cs @@ -0,0 +1,11 @@ +namespace DataAccessLayer.Repositories.UserCredential; + +public interface IUserCredentialRepository +{ + Task Add(Entities.UserCredential credential); + Task GetById(Guid userCredentialId); + Task GetByUserAccountId(Guid userAccountId); + Task> GetAll(int? limit, int? offset); + Task Update(Entities.UserCredential credential); + Task Delete(Guid userCredentialId); +} \ No newline at end of file diff --git a/Repository/Repository.Tests/UserAccountRepositoryTests.cs b/Repository/Repository.Tests/UserAccountRepositoryTests.cs index f5d9ddb..3cca273 100644 --- a/Repository/Repository.Tests/UserAccountRepositoryTests.cs +++ b/Repository/Repository.Tests/UserAccountRepositoryTests.cs @@ -1,6 +1,7 @@ using DataAccessLayer; using DataAccessLayer.Entities; using DataAccessLayer.Repositories; +using DataAccessLayer.Repositories.UserAccount; namespace DALTests { diff --git a/Service/Service.Core/Services/UserService.cs b/Service/Service.Core/Services/UserService.cs index 20a8e68..b4c4a85 100644 --- a/Service/Service.Core/Services/UserService.cs +++ b/Service/Service.Core/Services/UserService.cs @@ -1,5 +1,6 @@ using DataAccessLayer.Entities; using DataAccessLayer.Repositories; +using DataAccessLayer.Repositories.UserAccount; namespace BusinessLayer.Services {