From 005eea35e2b17a8194d2ed864b41a5f340e09ea8 Mon Sep 17 00:00:00 2001 From: Robert Marshall Date: Mon, 22 Jun 2020 19:47:45 +0100 Subject: [PATCH] Move Data.MongoDB to Data --- src/Robware.Api.Auth.sln | 2 +- src/Robware.Api.Auth/Robware.Api.Auth.csproj | 2 +- src/Robware.Api.Auth/Startup.cs | 2 +- src/Robware.Data.MongoDB/ApiKeyRepository.cs | 2 +- src/Robware.Data.MongoDB/UserRepository.cs | 6 ++--- .../Users/States/UserState.cs | 2 +- src/Robware.Data/ApiKeyRepository.cs | 10 ++++++++ .../Robware.Data.csproj} | 0 src/Robware.Data/UserRepository.cs | 23 +++++++++++++++++++ .../Users/DatabaseUser.cs | 4 ++-- src/Robware.Data/Users/States/UserState.cs | 12 ++++++++++ 11 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 src/Robware.Data/ApiKeyRepository.cs rename src/{Robware.Data.MongoDB/Robware.Data.MongoDB.csproj => Robware.Data/Robware.Data.csproj} (100%) create mode 100644 src/Robware.Data/UserRepository.cs rename src/{Robware.Data.MongoDB => Robware.Data}/Users/DatabaseUser.cs (68%) create mode 100644 src/Robware.Data/Users/States/UserState.cs diff --git a/src/Robware.Api.Auth.sln b/src/Robware.Api.Auth.sln index 3b269de..ecb6bfa 100644 --- a/src/Robware.Api.Auth.sln +++ b/src/Robware.Api.Auth.sln @@ -13,7 +13,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robware.Auth.Tests", "Robwa EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.csproj", "{19A36DA9-BFBF-4988-B7C7-4808D6B57246}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robware.Data.MongoDB", "Robware.Data.MongoDB\Robware.Data.MongoDB.csproj", "{574A8F26-06E4-4225-AE82-5824A721DD10}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robware.Data", "Robware.Data\Robware.Data.csproj", "{574A8F26-06E4-4225-AE82-5824A721DD10}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/Robware.Api.Auth/Robware.Api.Auth.csproj b/src/Robware.Api.Auth/Robware.Api.Auth.csproj index 7d8d017..dfbe54b 100644 --- a/src/Robware.Api.Auth/Robware.Api.Auth.csproj +++ b/src/Robware.Api.Auth/Robware.Api.Auth.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/Robware.Api.Auth/Startup.cs b/src/Robware.Api.Auth/Startup.cs index 148d473..d39f667 100644 --- a/src/Robware.Api.Auth/Startup.cs +++ b/src/Robware.Api.Auth/Startup.cs @@ -6,7 +6,7 @@ using Microsoft.Extensions.Hosting; using MongoDB.Driver; using Robware.Auth.API; using Robware.Auth.Users; -using Robware.Data.MongoDB; +using Robware.Data; namespace Robware.Api.Auth { public class Startup { diff --git a/src/Robware.Data.MongoDB/ApiKeyRepository.cs b/src/Robware.Data.MongoDB/ApiKeyRepository.cs index bdb7382..de618b4 100644 --- a/src/Robware.Data.MongoDB/ApiKeyRepository.cs +++ b/src/Robware.Data.MongoDB/ApiKeyRepository.cs @@ -1,7 +1,7 @@ using Robware.Auth.API; using System.Threading.Tasks; -namespace Robware.Data.MongoDB { +namespace Robware.Data { public class ApiKeyRepository : IApiKeys { public Task Get(string key) { throw new System.NotImplementedException(); diff --git a/src/Robware.Data.MongoDB/UserRepository.cs b/src/Robware.Data.MongoDB/UserRepository.cs index 1191552..7539a1d 100644 --- a/src/Robware.Data.MongoDB/UserRepository.cs +++ b/src/Robware.Data.MongoDB/UserRepository.cs @@ -1,10 +1,10 @@ using MongoDB.Driver; using Robware.Auth.Users; -using Robware.Data.MongoDB.Users; -using Robware.Data.MongoDB.Users.States; +using Robware.Data.Users; +using Robware.Data.Users.States; using System.Threading.Tasks; -namespace Robware.Data.MongoDB { +namespace Robware.Data { public class UserRepository : IUsers { IMongoCollection _collection; diff --git a/src/Robware.Data.MongoDB/Users/States/UserState.cs b/src/Robware.Data.MongoDB/Users/States/UserState.cs index c679adc..eac2a3c 100644 --- a/src/Robware.Data.MongoDB/Users/States/UserState.cs +++ b/src/Robware.Data.MongoDB/Users/States/UserState.cs @@ -1,7 +1,7 @@ using MongoDB.Bson.Serialization.Attributes; using System; -namespace Robware.Data.MongoDB.Users.States { +namespace Robware.Data.Users.States { public class UserState { [BsonId] public int Id { get; set; } diff --git a/src/Robware.Data/ApiKeyRepository.cs b/src/Robware.Data/ApiKeyRepository.cs new file mode 100644 index 0000000..de618b4 --- /dev/null +++ b/src/Robware.Data/ApiKeyRepository.cs @@ -0,0 +1,10 @@ +using Robware.Auth.API; +using System.Threading.Tasks; + +namespace Robware.Data { + public class ApiKeyRepository : IApiKeys { + public Task Get(string key) { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/Robware.Data.MongoDB/Robware.Data.MongoDB.csproj b/src/Robware.Data/Robware.Data.csproj similarity index 100% rename from src/Robware.Data.MongoDB/Robware.Data.MongoDB.csproj rename to src/Robware.Data/Robware.Data.csproj diff --git a/src/Robware.Data/UserRepository.cs b/src/Robware.Data/UserRepository.cs new file mode 100644 index 0000000..7539a1d --- /dev/null +++ b/src/Robware.Data/UserRepository.cs @@ -0,0 +1,23 @@ +using MongoDB.Driver; +using Robware.Auth.Users; +using Robware.Data.Users; +using Robware.Data.Users.States; +using System.Threading.Tasks; + +namespace Robware.Data { + public class UserRepository : IUsers { + IMongoCollection _collection; + + public UserRepository(IMongoDatabase database) { + _collection = database.GetCollection("users"); + } + + public async Task GetByEmail(string email) { + var result = (await _collection.FindAsync(user => user.Email == email)).FirstOrDefault(); + if (result == null) + throw new UserNotFoundException(email); + + return new DatabaseUser(result); + } + } +} diff --git a/src/Robware.Data.MongoDB/Users/DatabaseUser.cs b/src/Robware.Data/Users/DatabaseUser.cs similarity index 68% rename from src/Robware.Data.MongoDB/Users/DatabaseUser.cs rename to src/Robware.Data/Users/DatabaseUser.cs index 876dc76..bdf3834 100644 --- a/src/Robware.Data.MongoDB/Users/DatabaseUser.cs +++ b/src/Robware.Data/Users/DatabaseUser.cs @@ -1,7 +1,7 @@ using Robware.Auth.Users; -using Robware.Data.MongoDB.Users.States; +using Robware.Data.Users.States; -namespace Robware.Data.MongoDB.Users { +namespace Robware.Data.Users { public class DatabaseUser : User { public DatabaseUser(UserState state) { Username = state.Email; diff --git a/src/Robware.Data/Users/States/UserState.cs b/src/Robware.Data/Users/States/UserState.cs new file mode 100644 index 0000000..eac2a3c --- /dev/null +++ b/src/Robware.Data/Users/States/UserState.cs @@ -0,0 +1,12 @@ +using MongoDB.Bson.Serialization.Attributes; +using System; + +namespace Robware.Data.Users.States { + public class UserState { + [BsonId] + public int Id { get; set; } + public string Email { get; set; } + public string Password { get; set; } + public DateTime Created{ get; set; } + } +} \ No newline at end of file