using Bitvault.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Toolkit.Foundation; namespace Bitvault; public class CreateItemHandler(IDbContextFactory dbContextFactory) : IHandler, bool> { public async Task Handle(CreateEventArgs<(Guid, string, ItemConfiguration)> args, CancellationToken cancellationToken) { if (args.Value is (Guid id, string name, ItemConfiguration configuration)) { try { using LockerContext context = dbContextFactory.CreateDbContext(); EntityEntry? result = null; await Task.Run(async () => { result = await context.AddAsync(new ItemEntry { Id = id, Name = name }, cancellationToken); await context.SaveChangesAsync(cancellationToken); }, cancellationToken); if (result is not null) { return true; } } catch { } } return false; } }