mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
Correct package version installed
Dependency injection works Project renaming WIP replacement of services with CQRS
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
<None Include="project.json" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ApplicationModule.cs" />
|
||||
<Compile Include="Common\Interfaces\ICryptographyClient.cs" />
|
||||
<Compile Include="Common\Interfaces\IDatabaseProxy.cs" />
|
||||
<Compile Include="Common\Interfaces\IFileProxy.cs" />
|
||||
@@ -52,16 +53,18 @@
|
||||
<Compile Include="Common\Interfaces\ISelectableModel.cs" />
|
||||
<Compile Include="Common\Interfaces\ISettingsProxy.cs" />
|
||||
<Compile Include="Common\Mappings\IMapFrom.cs" />
|
||||
<Content Include="Common\Mappings\MappingProfile.cs" />
|
||||
<Compile Include="Common\Mappings\MappingProfile.cs" />
|
||||
<Compile Include="Common\Mappings\MappingProfiles.cs" />
|
||||
<Compile Include="Database\Commands\CloseDatabase\CloseDatabaseCommand.cs" />
|
||||
<Compile Include="Database\Commands\CreateDatabase\CreateDatabaseCommand.cs" />
|
||||
<Compile Include="Database\Commands\SaveDatabase\SaveDatabaseCommand.cs" />
|
||||
<Compile Include="Database\Models\DatabaseVm.cs" />
|
||||
<Compile Include="Database\Models\MainVm.cs" />
|
||||
<Compile Include="Database\Queries\GetDatabase\GetDatabaseQuery.cs" />
|
||||
<Compile Include="Database\Queries\IsDatabaseOpen\IsDatabaseOpenQuery.cs" />
|
||||
<Compile Include="Database\Queries\OpenDatabase\OpenDatabaseQuery.cs" />
|
||||
<Compile Include="Database\Queries\OpenDatabase\OpenDatabaseQueryValidator.cs" />
|
||||
<Compile Include="DependencyInjection.cs" />
|
||||
<Compile Include="Entry\Models\EntryVm.cs" />
|
||||
<Compile Include="Group\Models\GroupVm.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
@@ -88,9 +91,9 @@
|
||||
<Folder Include="Settings\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ModernKeePass.Domain\ModernKeePass.Domain.csproj">
|
||||
<ProjectReference Include="..\ModernKeePass.Domain\Domain.csproj">
|
||||
<Project>{9a0759f1-9069-4841-99e3-3bec44e17356}</Project>
|
||||
<Name>ModernKeePass.Domain</Name>
|
||||
<Name>Domain</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
|
32
ModernKeePass.Application/ApplicationModule.cs
Normal file
32
ModernKeePass.Application/ApplicationModule.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System.Reflection;
|
||||
using Autofac;
|
||||
using AutoMapper;
|
||||
using MediatR;
|
||||
using ModernKeePass.Application.Common.Mappings;
|
||||
using Module = Autofac.Module;
|
||||
|
||||
namespace ModernKeePass.Application
|
||||
{
|
||||
public class ApplicationModule: Module
|
||||
{
|
||||
protected override void Load(ContainerBuilder builder)
|
||||
{
|
||||
// Register Automapper profiles
|
||||
builder.RegisterType<MappingProfiles>().As<Profile>();
|
||||
|
||||
// Register Mediatr
|
||||
builder
|
||||
.RegisterType<Mediator>()
|
||||
.As<IMediator>()
|
||||
.InstancePerLifetimeScope();
|
||||
|
||||
// request & notification handlers
|
||||
builder.Register<SingleInstanceFactory>(context =>
|
||||
{
|
||||
var c = context.Resolve<IComponentContext>();
|
||||
return t => c.Resolve(t);
|
||||
});
|
||||
builder.RegisterAssemblyTypes(typeof(ApplicationModule).GetTypeInfo().Assembly).AsImplementedInterfaces();
|
||||
}
|
||||
}
|
||||
}
|
@@ -7,6 +7,7 @@ namespace ModernKeePass.Application.Common.Interfaces
|
||||
public interface IDatabaseProxy
|
||||
{
|
||||
bool IsOpen { get; }
|
||||
string Name { get; }
|
||||
GroupEntity RecycleBin { get; set; }
|
||||
BaseEntity Cipher { get; set; }
|
||||
BaseEntity KeyDerivation { get; set; }
|
||||
|
@@ -2,7 +2,7 @@
|
||||
{
|
||||
public interface ISettingsProxy
|
||||
{
|
||||
T GetSetting<T>(string property, T defaultValue = default);
|
||||
T GetSetting<T>(string property, T defaultValue = default(T));
|
||||
void PutSetting<T>(string property, T value);
|
||||
}
|
||||
}
|
@@ -9,20 +9,20 @@ namespace ModernKeePass.Application.Common.Mappings
|
||||
{
|
||||
public MappingProfile()
|
||||
{
|
||||
ApplyMappingsFromAssembly(Assembly.GetExecutingAssembly());
|
||||
ApplyMappingsFromAssembly(typeof(MappingProfile).GetTypeInfo().Assembly);
|
||||
}
|
||||
|
||||
private void ApplyMappingsFromAssembly(Assembly assembly)
|
||||
{
|
||||
var types = assembly.GetExportedTypes()
|
||||
.Where(t => t.GetInterfaces().Any(i =>
|
||||
i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IMapFrom<>)))
|
||||
var types = assembly.ExportedTypes
|
||||
.Where(t => t.GetTypeInfo().ImplementedInterfaces.Any(i =>
|
||||
i.GetTypeInfo().IsGenericType && i.GetGenericTypeDefinition() == typeof(IMapFrom<>)))
|
||||
.ToList();
|
||||
|
||||
foreach (var type in types)
|
||||
{
|
||||
var instance = Activator.CreateInstance(type);
|
||||
var methodInfo = type.GetMethod("Mapping");
|
||||
var methodInfo = type.GetTypeInfo().GetDeclaredMethod("Mapping");
|
||||
methodInfo?.Invoke(instance, new object[] { this });
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,4 @@
|
||||
using MediatR;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using ModernKeePass.Application.Common.Interfaces;
|
||||
using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
|
||||
@@ -9,7 +8,7 @@ namespace ModernKeePass.Application.Database.Commands.CloseDatabase
|
||||
{
|
||||
public class CloseDatabaseCommand: IRequest
|
||||
{
|
||||
public class CloseDatabaseCommandHandler : IRequestHandler<CloseDatabaseCommand>
|
||||
public class CloseDatabaseCommandHandler : IAsyncRequestHandler<CloseDatabaseCommand>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IMediator _mediator;
|
||||
@@ -19,10 +18,9 @@ namespace ModernKeePass.Application.Database.Commands.CloseDatabase
|
||||
_database = database;
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
public async Task Handle(CloseDatabaseCommand message, CancellationToken cancellationToken)
|
||||
public async Task Handle(CloseDatabaseCommand message)
|
||||
{
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery(), cancellationToken);
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
|
||||
if (isDatabaseOpen) _database.CloseDatabase();
|
||||
else throw new DatabaseClosedException();
|
||||
}
|
||||
|
@@ -1,5 +1,4 @@
|
||||
using MediatR;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AutoMapper;
|
||||
using ModernKeePass.Application.Common.Interfaces;
|
||||
@@ -16,7 +15,7 @@ namespace ModernKeePass.Application.Database.Commands.CreateDatabase
|
||||
public FileInfo FileInfo { get; set; }
|
||||
public Credentials Credentials { get; set; }
|
||||
|
||||
public class CreateDatabaseCommandHandler : IRequestHandler<CreateDatabaseCommand, DatabaseVm>
|
||||
public class CreateDatabaseCommandHandler : IAsyncRequestHandler<CreateDatabaseCommand, DatabaseVm>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IMediator _mediator;
|
||||
@@ -29,9 +28,9 @@ namespace ModernKeePass.Application.Database.Commands.CreateDatabase
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
public async Task<DatabaseVm> Handle(CreateDatabaseCommand message, CancellationToken cancellationToken)
|
||||
public async Task<DatabaseVm> Handle(CreateDatabaseCommand message)
|
||||
{
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery(), cancellationToken);
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
|
||||
if (isDatabaseOpen) throw new DatabaseOpenException();
|
||||
|
||||
var database = await _database.Create(message.FileInfo, message.Credentials);
|
||||
@@ -43,6 +42,7 @@ namespace ModernKeePass.Application.Database.Commands.CreateDatabase
|
||||
};
|
||||
return databaseVm;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,13 +3,16 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using ModernKeePass.Application.Common.Interfaces;
|
||||
using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
|
||||
using ModernKeePass.Domain.Dtos;
|
||||
using ModernKeePass.Domain.Exceptions;
|
||||
|
||||
namespace ModernKeePass.Application.Database.Commands.SaveDatabase
|
||||
{
|
||||
public class SaveDatabaseCommand : IRequest
|
||||
{
|
||||
public class SaveDatabaseCommandHandler : IRequestHandler<SaveDatabaseCommand>
|
||||
public FileInfo FileInfo { get; set; }
|
||||
|
||||
public class SaveDatabaseCommandHandler : IAsyncRequestHandler<SaveDatabaseCommand>
|
||||
{
|
||||
private readonly IDatabaseProxy _database;
|
||||
private readonly IMediator _mediator;
|
||||
@@ -20,10 +23,14 @@ namespace ModernKeePass.Application.Database.Commands.SaveDatabase
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
public async Task Handle(SaveDatabaseCommand message, CancellationToken cancellationToken)
|
||||
public async Task Handle(SaveDatabaseCommand message)
|
||||
{
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery(), cancellationToken);
|
||||
if (isDatabaseOpen) await _database.SaveDatabase();
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
|
||||
if (isDatabaseOpen)
|
||||
{
|
||||
if (message.FileInfo != null) await _database.SaveDatabase(message.FileInfo);
|
||||
else await _database.SaveDatabase();
|
||||
}
|
||||
else throw new DatabaseClosedException();
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,29 @@
|
||||
using MediatR;
|
||||
using ModernKeePass.Application.Common.Interfaces;
|
||||
using ModernKeePass.Application.Database.Models;
|
||||
|
||||
namespace ModernKeePass.Application.Database.Queries.GetDatabase
|
||||
{
|
||||
public class GetDatabaseQuery: IRequest<DatabaseVm>
|
||||
{
|
||||
public class GetDatabaseQueryHandler : IRequestHandler<GetDatabaseQuery, DatabaseVm>
|
||||
{
|
||||
private readonly IDatabaseProxy _databaseProxy;
|
||||
|
||||
public GetDatabaseQueryHandler(IDatabaseProxy databaseProxy)
|
||||
{
|
||||
_databaseProxy = databaseProxy;
|
||||
}
|
||||
|
||||
public DatabaseVm Handle(GetDatabaseQuery request)
|
||||
{
|
||||
var database = new DatabaseVm
|
||||
{
|
||||
IsOpen = _databaseProxy.IsOpen,
|
||||
Name = _databaseProxy.Name
|
||||
};
|
||||
return database;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,6 +1,4 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediatR;
|
||||
using MediatR;
|
||||
using ModernKeePass.Application.Common.Interfaces;
|
||||
|
||||
namespace ModernKeePass.Application.Database.Queries.IsDatabaseOpen
|
||||
@@ -15,10 +13,12 @@ namespace ModernKeePass.Application.Database.Queries.IsDatabaseOpen
|
||||
{
|
||||
_databaseProxy = databaseProxy;
|
||||
}
|
||||
public Task<bool> Handle(IsDatabaseOpenQuery request, CancellationToken cancellationToken)
|
||||
|
||||
public bool Handle(IsDatabaseOpenQuery message)
|
||||
{
|
||||
return Task.FromResult(_databaseProxy.IsOpen);
|
||||
return _databaseProxy.IsOpen;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,7 +16,7 @@ namespace ModernKeePass.Application.Database.Queries.OpenDatabase
|
||||
public FileInfo FileInfo { get; set; }
|
||||
public Credentials Credentials { get; set; }
|
||||
|
||||
public class OpenDatabaseQueryHandler : IRequestHandler<OpenDatabaseQuery, DatabaseVm>
|
||||
public class OpenDatabaseQueryHandler : IAsyncRequestHandler<OpenDatabaseQuery, DatabaseVm>
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
private readonly IMediator _mediator;
|
||||
@@ -29,9 +29,9 @@ namespace ModernKeePass.Application.Database.Queries.OpenDatabase
|
||||
_databaseProxy = databaseProxy;
|
||||
}
|
||||
|
||||
public async Task<DatabaseVm> Handle(OpenDatabaseQuery request, CancellationToken cancellationToken)
|
||||
public async Task<DatabaseVm> Handle(OpenDatabaseQuery request)
|
||||
{
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery(), cancellationToken);
|
||||
var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
|
||||
if (isDatabaseOpen) throw new DatabaseOpenException();
|
||||
|
||||
var database = await _databaseProxy.Open(request.FileInfo, request.Credentials);
|
||||
|
21
ModernKeePass.Application/DependencyInjection.cs
Normal file
21
ModernKeePass.Application/DependencyInjection.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using System.Reflection;
|
||||
using AutoMapper;
|
||||
using FluentValidation;
|
||||
using MediatR;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ModernKeePass.Application
|
||||
{
|
||||
public static class DependencyInjection
|
||||
{
|
||||
public static IServiceCollection AddApplication(this IServiceCollection services)
|
||||
{
|
||||
var assembly = typeof(DependencyInjection).GetTypeInfo().Assembly;
|
||||
services.AddAutoMapper(assembly);
|
||||
services.AddMediatR(assembly);
|
||||
//services.AddValidatorsFromAssembly(Assembly.GetExecutingAssembly());
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
@@ -2,11 +2,15 @@
|
||||
"supports": {},
|
||||
"dependencies": {
|
||||
"Autofac": "4.9.4",
|
||||
"AutoMapper": "6.2.2",
|
||||
"Autofac.Extensions.DependencyInjection": "4.4.0",
|
||||
"AutoMapper": "6.1.1",
|
||||
"AutoMapper.Extensions.Microsoft.DependencyInjection": "2.0.1",
|
||||
"FluentValidation": "8.6.2",
|
||||
"MediatR": "4.0.0",
|
||||
"MediatR": "3.0.1",
|
||||
"MediatR.Extensions.Microsoft.DependencyInjection": "2.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection": "1.1.1",
|
||||
"Microsoft.NETCore.Portable.Compatibility": "1.0.1",
|
||||
"NETStandard.Library": "1.6.1",
|
||||
"NETStandard.Library": "2.0.3",
|
||||
"Splat": "3.0.0"
|
||||
},
|
||||
"frameworks": {
|
||||
|
Reference in New Issue
Block a user