private async Task UpdateCore(UpdateAsset update, AssetOperation operation) { if (!update.DoNotScript) { await operation.ExecuteUpdateScriptAsync(update); } Update(update); }
private async Task MoveCore(MoveAsset move, AssetOperation operation) { if (!move.OptimizeValidation) { await operation.MustMoveToValidFolder(move.ParentId); } if (!move.DoNotScript) { await operation.ExecuteMoveScriptAsync(move); } Move(move); }
private async Task AnnotateCore(AnnotateAsset annotate, AssetOperation operation) { if (!annotate.DoNotScript) { await operation.ExecuteAnnotateScriptAsync(annotate); } if (annotate.Tags != null) { annotate.Tags = await operation.NormalizeTags(annotate.Tags); } Annotate(annotate); }
private async Task DeleteCore(DeleteAsset delete, AssetOperation operation) { if (delete.CheckReferrers) { await operation.CheckReferrersAsync(); } if (!delete.DoNotScript) { await operation.ExecuteDeleteScriptAsync(delete); } await operation.UnsetTags(); Delete(delete); }
private async Task CreateCore(CreateAsset create, AssetOperation operation) { if (!create.OptimizeValidation) { await operation.MustMoveToValidFolder(create.ParentId); } if (!create.DoNotScript) { await operation.ExecuteCreateScriptAsync(create); } if (create.Tags != null) { create.Tags = await operation.NormalizeTags(create.Tags); } Create(create); }
public override Task <CommandResult> ExecuteAsync(IAggregateCommand command) { switch (command) { case UpsertAsset upsert: return(UpsertReturnAsync(upsert, async c => { var operation = await AssetOperation.CreateAsync(serviceProvider, c, () => Snapshot); if (Version > EtagVersion.Empty && !IsDeleted(Snapshot)) { await UpdateCore(c.AsUpdate(), operation); } else { await CreateCore(c.AsCreate(), operation); } if (Is.OptionalChange(Snapshot.ParentId, c.ParentId)) { await MoveCore(c.AsMove(c.ParentId.Value), operation); } return Snapshot; })); case CreateAsset c: return(CreateReturnAsync(c, async create => { var operation = await AssetOperation.CreateAsync(serviceProvider, c, () => Snapshot); await CreateCore(create, operation); if (Is.Change(Snapshot.ParentId, c.ParentId)) { await MoveCore(c.AsMove(), operation); } return Snapshot; })); case AnnotateAsset c: return(UpdateReturnAsync(c, async c => { var operation = await AssetOperation.CreateAsync(serviceProvider, c, () => Snapshot); await AnnotateCore(c, operation); return Snapshot; })); case UpdateAsset update: return(UpdateReturnAsync(update, async c => { var operation = await AssetOperation.CreateAsync(serviceProvider, c, () => Snapshot); await UpdateCore(c, operation); return Snapshot; })); case MoveAsset move: return(UpdateReturnAsync(move, async c => { var operation = await AssetOperation.CreateAsync(serviceProvider, c, () => Snapshot); await MoveCore(c, operation); return Snapshot; })); case DeleteAsset delete when delete.Permanent: return(DeletePermanentAsync(delete, async c => { var operation = await AssetOperation.CreateAsync(serviceProvider, c, () => Snapshot); await DeleteCore(c, operation); })); case DeleteAsset delete: return(UpdateAsync(delete, async c => { var operation = await AssetOperation.CreateAsync(serviceProvider, c, () => Snapshot); await DeleteCore(c, operation); })); default: throw new NotSupportedException(); } }