protected override async Task <FlowElementResult> OnExecuteAsync(object args, FlowState state) { object result = _delete switch { DeleteById byId => await Db.DeleteByIdAsync <TTable>(byId.MapId(args)), DeleteByIds byIds => await Db.DeleteByIdsAsync <TTable>(byIds.MapIds(args)), DeleteAll _ => await Db.DeleteAllAsync <TTable>(), DeleteAll <TTable> all => await Db.DeleteAsync(all.ExpressionBuilder(args)), _ => new NotImplementedException("Delete action not implemented") }; return(new FlowSuccessResult { Result = result }); } }
private void DeleteByIdCmd(DeleteById cmd) { // verify id valid if (!State.IdNotDeleted(cmd.Id)) { if (State.IdDeleted(cmd.Id)) { Sender.Tell(new DeleteById_IdAlreadyDeleted()); } else { Sender.Tell(new DeleteById_IdNotFound()); } return; } IActorRef entityActor = ActorRefs.Nobody; if (State.IdsActive.Contains(cmd.Id)) { entityActor = Context.Child(cmd.Id); if (entityActor == ActorRefs.Nobody) { entityActor = CreateEntity(cmd.Id); } } // if inactive, activate if (entityActor == ActorRefs.Nobody && State.IdsInactive.Contains(cmd.Id)) { entityActor = CreateEntity(cmd.Id); State.ActivateId(cmd.Id); } // delete record var deletedId = new DeletedId(cmd.Id); PersistAndTrack(deletedId, result => { DeletedIdEvnt(result); entityActor.Forward(cmd); }); }
private void DeleteByIdCmd(DeleteById cmd) { CreateRequest(cmd, new EntityTypeActor.DeleteById(cmd.Id)); }