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
                });
            }
        }
Пример #2
0
        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);
            });
        }
Пример #3
0
 private void DeleteByIdCmd(DeleteById cmd)
 {
     CreateRequest(cmd, new EntityTypeActor.DeleteById(cmd.Id));
 }