示例#1
0
        public async Task <ICommandResult <Star> > DeleteAsync(Star model)
        {
            // Validate
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            // Invoke StarDeleting subscriptions
            foreach (var handler in _broker.Pub <Star>(this, "StarDeleting"))
            {
                model = await handler.Invoke(new Message <Star>(model, this));
            }

            var result = new CommandResult <Star>();

            if (await _starStore.DeleteAsync(model))
            {
                // Invoke StarDeleted subscriptions
                foreach (var handler in _broker.Pub <Star>(this, "StarDeleted"))
                {
                    model = await handler.Invoke(new Message <Star>(model, this));
                }

                // Return success
                return(result.Success());
            }

            return(result.Failed(new CommandError("An unknown error occurred whilst attempting to delete a follow.")));
        }