Get items stored and retrieved from the db
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Toolkit.Foundation;
|
||||
|
||||
namespace Bitvault;
|
||||
@@ -15,7 +14,4 @@ public partial class AddItemActionViewModel(IServiceProvider provider,
|
||||
|
||||
[ObservableProperty]
|
||||
private string named = $"{named}";
|
||||
|
||||
[RelayCommand]
|
||||
public async Task Invoke() => await Publisher.Publish(new Test());
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace Bitvault;
|
||||
|
||||
public partial class AddItemViewModel :
|
||||
ObservableCollectionViewModel<IItemViewModel>,
|
||||
INotificationHandler<Test>
|
||||
INotificationHandler<Confirm<Item>>
|
||||
{
|
||||
[ObservableProperty]
|
||||
private string named;
|
||||
@@ -27,7 +27,7 @@ public partial class AddItemViewModel :
|
||||
|
||||
public IContentTemplate Template { get; set; }
|
||||
|
||||
public Task<bool> Confirm()
|
||||
public async Task Handle(Confirm<Item> args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
ItemConfiguration configuration = new();
|
||||
foreach (IItemViewModel item in this)
|
||||
@@ -35,11 +35,6 @@ public partial class AddItemViewModel :
|
||||
item.Invoke(configuration);
|
||||
}
|
||||
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
public Task Handle(Test args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
await Mediator.Handle<Create<ItemConfiguration>, bool>(Create.As(configuration), cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@ using Toolkit.Foundation;
|
||||
|
||||
namespace Bitvault;
|
||||
|
||||
public record Test;
|
||||
|
||||
public partial class ConfirmItemActionViewModel(IServiceProvider provider,
|
||||
IServiceFactory factory,
|
||||
IMediator mediator,
|
||||
@@ -12,6 +10,7 @@ public partial class ConfirmItemActionViewModel(IServiceProvider provider,
|
||||
ISubscriber subscriber,
|
||||
IDisposer disposer) : ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer)
|
||||
{
|
||||
|
||||
[RelayCommand]
|
||||
public async Task Invoke() => await Publisher.Publish(new Test());
|
||||
public async Task Invoke() => await Publisher.Publish(Confirm.As<Item>());
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@ public class ContainerFactory(IContainer<ContainerConnection> connection,
|
||||
connection.Set(new ContainerConnection($"Data Source={Path.Combine(environment.ContentRootPath, name)}" +
|
||||
$".vault;Mode=ReadWriteCreate;Pooling=false;Password={Convert.ToBase64String(key.DecryptedKey)}"));
|
||||
|
||||
IDbContextFactory<VaultDbContext> dbContextFactory = provider.GetRequiredService<IDbContextFactory<VaultDbContext>>();
|
||||
using VaultDbContext context = await dbContextFactory.CreateDbContextAsync();
|
||||
IDbContextFactory<ContainerDbContext> dbContextFactory = provider.GetRequiredService<IDbContextFactory<ContainerDbContext>>();
|
||||
using ContainerDbContext context = await dbContextFactory.CreateDbContextAsync();
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Bitvault;
|
||||
|
||||
public class ContainerCollectionInitializer(IEnumerable<IConfigurationDescriptor<ContainerConfiguration>> configurations,
|
||||
public class ContainerInitializer(IEnumerable<IConfigurationDescriptor<ContainerConfiguration>> configurations,
|
||||
IComponentFactory componentFactory,
|
||||
IContainerHostCollection vaults) : IInitializer
|
||||
{
|
||||
@@ -36,16 +36,16 @@ public partial class ContainerViewModel(IServiceProvider provider,
|
||||
await base.Deactivated();
|
||||
}
|
||||
|
||||
public async Task Handle(SecureStorage<Filter<string>> args,
|
||||
CancellationToken cancellationToken = default)
|
||||
public async Task Handle(SecureStorage<Filter<string>> args,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (args.Value is Filter<string> filter)
|
||||
{
|
||||
if (args.Value is Filter<string> filter)
|
||||
{
|
||||
Filter = filter.Value;
|
||||
await Enumerate();
|
||||
}
|
||||
Filter = filter.Value;
|
||||
await Enumerate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override IEnumerate PrepareEnumeration(object? key) =>
|
||||
Enumerate<ItemNavigationViewModel>.With(new ContainerViewModelConfiguration { Filter = Filter }) with { Key = key };
|
||||
protected override IEnumerate PrepareEnumeration(object? key) =>
|
||||
Enumerate<ItemNavigationViewModel>.With(new ContainerViewModelConfiguration { Filter = Filter }) with { Key = key };
|
||||
}
|
||||
@@ -1,47 +1,34 @@
|
||||
using Toolkit.Foundation;
|
||||
using Bitvault.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Toolkit.Foundation;
|
||||
|
||||
namespace Bitvault;
|
||||
|
||||
public class ContainerViewModelHandler(IServiceFactory factory,
|
||||
public class ContainerViewModelHandler(IDbContextFactory<ContainerDbContext> dbContextFactory,
|
||||
IServiceFactory factory,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<Enumerate<ItemNavigationViewModel, ContainerViewModelConfiguration>>
|
||||
{
|
||||
public async Task Handle(Enumerate<ItemNavigationViewModel, ContainerViewModelConfiguration> args,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (args.Options?.Filter is "All")
|
||||
var items = await Task.Run(async () =>
|
||||
{
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
if (factory.Create<ItemNavigationViewModel>("Name " + i, "Description " + 1) is ItemNavigationViewModel viewModel)
|
||||
{
|
||||
await publisher.Publish(new Create<ItemNavigationViewModel>(viewModel),
|
||||
nameof(ContainerViewModel), cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
using ContainerDbContext context = dbContextFactory.CreateDbContext();
|
||||
return await context.Set<Data.Item>().Select(x => new
|
||||
{
|
||||
x.Name,
|
||||
x.State
|
||||
}).Where(x => x.State != 3).ToListAsync();
|
||||
|
||||
if (args.Options?.Filter is "Starred")
|
||||
{
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
if (factory.Create<ItemNavigationViewModel>("Name " + i, "Description " + 1) is ItemNavigationViewModel viewModel)
|
||||
{
|
||||
await publisher.Publish(new Create<ItemNavigationViewModel>(viewModel),
|
||||
nameof(ContainerViewModel), cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, cancellationToken);
|
||||
|
||||
if (args.Options?.Filter is "Archive")
|
||||
foreach (var item in items)
|
||||
{
|
||||
for (int i = 0; i < 1000; i++)
|
||||
if (factory.Create<ItemNavigationViewModel>(item.Name, "Description " + 1) is ItemNavigationViewModel viewModel)
|
||||
{
|
||||
if (factory.Create<ItemNavigationViewModel>("Name " + i, "Description " + 1) is ItemNavigationViewModel viewModel)
|
||||
{
|
||||
await publisher.Publish(new Create<ItemNavigationViewModel>(viewModel),
|
||||
nameof(ContainerViewModel), cancellationToken);
|
||||
}
|
||||
await publisher.Publish(new Create<ItemNavigationViewModel>(viewModel),
|
||||
nameof(ContainerViewModel), cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
namespace Bitvault;
|
||||
|
||||
public record Item;
|
||||
@@ -0,0 +1,35 @@
|
||||
using Bitvault.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Toolkit.Foundation;
|
||||
|
||||
namespace Bitvault;
|
||||
|
||||
public class ItemConfigurationHandler(IDbContextFactory<ContainerDbContext> dbContextFactory) :
|
||||
IHandler<Create<ItemConfiguration>, bool>
|
||||
{
|
||||
public async Task<bool> Handle(Create<ItemConfiguration> args,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (args.Value is ItemConfiguration configuration)
|
||||
{
|
||||
try
|
||||
{
|
||||
await Task.Run(async () =>
|
||||
{
|
||||
using ContainerDbContext context = dbContextFactory.CreateDbContext();
|
||||
|
||||
await context.AddAsync(new Data.Item { Name = configuration.Name }, cancellationToken);
|
||||
await context.SaveChangesAsync(cancellationToken);
|
||||
}, cancellationToken);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -13,8 +13,7 @@ public partial class ItemNavigationViewModel(IServiceProvider provider,
|
||||
NamedComponent named,
|
||||
string name,
|
||||
string description) :
|
||||
ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer),
|
||||
INotificationHandler<Test>
|
||||
ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer)
|
||||
{
|
||||
[ObservableProperty]
|
||||
private string? description = description;
|
||||
@@ -28,9 +27,4 @@ public partial class ItemNavigationViewModel(IServiceProvider provider,
|
||||
[ObservableProperty]
|
||||
private bool selected;
|
||||
public IContentTemplate Template { get; set; } = template;
|
||||
|
||||
public Task Handle(Test args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user