Move Data.MongoDB to Data

This commit is contained in:
Robert Marshall 2020-06-22 19:47:45 +01:00
parent 6e412f4f26
commit 005eea35e2
11 changed files with 55 additions and 10 deletions

View file

@ -13,7 +13,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robware.Auth.Tests", "Robwa
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.csproj", "{19A36DA9-BFBF-4988-B7C7-4808D6B57246}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.csproj", "{19A36DA9-BFBF-4988-B7C7-4808D6B57246}"
EndProject 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 EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution

View file

@ -6,7 +6,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Robware.Auth\Robware.Auth.csproj" /> <ProjectReference Include="..\Robware.Auth\Robware.Auth.csproj" />
<ProjectReference Include="..\Robware.Data.MongoDB\Robware.Data.MongoDB.csproj" /> <ProjectReference Include="..\Robware.Data\Robware.Data.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -6,7 +6,7 @@ using Microsoft.Extensions.Hosting;
using MongoDB.Driver; using MongoDB.Driver;
using Robware.Auth.API; using Robware.Auth.API;
using Robware.Auth.Users; using Robware.Auth.Users;
using Robware.Data.MongoDB; using Robware.Data;
namespace Robware.Api.Auth { namespace Robware.Api.Auth {
public class Startup { public class Startup {

View file

@ -1,7 +1,7 @@
using Robware.Auth.API; using Robware.Auth.API;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Robware.Data.MongoDB { namespace Robware.Data {
public class ApiKeyRepository : IApiKeys { public class ApiKeyRepository : IApiKeys {
public Task<ApiKey> Get(string key) { public Task<ApiKey> Get(string key) {
throw new System.NotImplementedException(); throw new System.NotImplementedException();

View file

@ -1,10 +1,10 @@
using MongoDB.Driver; using MongoDB.Driver;
using Robware.Auth.Users; using Robware.Auth.Users;
using Robware.Data.MongoDB.Users; using Robware.Data.Users;
using Robware.Data.MongoDB.Users.States; using Robware.Data.Users.States;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Robware.Data.MongoDB { namespace Robware.Data {
public class UserRepository : IUsers { public class UserRepository : IUsers {
IMongoCollection<UserState> _collection; IMongoCollection<UserState> _collection;

View file

@ -1,7 +1,7 @@
using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Attributes;
using System; using System;
namespace Robware.Data.MongoDB.Users.States { namespace Robware.Data.Users.States {
public class UserState { public class UserState {
[BsonId] [BsonId]
public int Id { get; set; } public int Id { get; set; }

View file

@ -0,0 +1,10 @@
using Robware.Auth.API;
using System.Threading.Tasks;
namespace Robware.Data {
public class ApiKeyRepository : IApiKeys {
public Task<ApiKey> Get(string key) {
throw new System.NotImplementedException();
}
}
}

View file

@ -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<UserState> _collection;
public UserRepository(IMongoDatabase database) {
_collection = database.GetCollection<UserState>("users");
}
public async Task<User> GetByEmail(string email) {
var result = (await _collection.FindAsync(user => user.Email == email)).FirstOrDefault();
if (result == null)
throw new UserNotFoundException(email);
return new DatabaseUser(result);
}
}
}

View file

@ -1,7 +1,7 @@
using Robware.Auth.Users; 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 class DatabaseUser : User {
public DatabaseUser(UserState state) { public DatabaseUser(UserState state) {
Username = state.Email; Username = state.Email;

View file

@ -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; }
}
}