/// <summary> /// After a "Patch" request has been processed and the response basket has ascended to here /// any cached object and collection which is now invalid is removed from the cache /// </summary> /// <param name="basket">The response</param> /// <param name="visit">The visit the basket is currently making</param> /// <returns>A Task that may be awaited</returns> public Task AscendFromAsync(IPatchBasket <TId, T> basket, IVisit visit) { // always remove items from cache on way back up, otherwise another thread // may repopulate the cache before the decent is complete if (basket?.DescentPayload?.Delta != null) { Cache.RemoveCollection(); Cache.Remove(basket.DescentPayload.Delta.Identity); } return(Task.CompletedTask); }
/// <summary> /// Performs a partial update to a T in the database and sets the baskets AscentPayload to the number of records affected /// </summary> /// <param name="basket">A basket</param> /// <param name="visit">The visit the basket is currently making</param> /// <returns>A Task that may be awaited</returns> public async Task AddResultAsync(IPatchBasket <TId, T, int> basket, IVisit visit) { if (basket == null) { throw new ArgumentNullException(nameof(basket)); } var statement = GetUpdateDbStatement(basket.DescentPayload); visit.Log(statement.ToString()); basket.AscentPayload = await DbInterface.ExecuteNonQueryAsync(statement).ConfigureAwait(false); }
/// <summary> /// No action performed /// </summary> /// <param name="basket">The request</param> /// <param name="visit">The visit the basket is currently making</param> /// <returns>A Task that may be awaited</returns> public Task DescendToAsync(IPatchBasket <TId, T> basket, IVisit visit) { return(Task.CompletedTask); }
public Task AddResultAsync(IPatchBasket <int, Frog, int> basket, IVisit visit) { basket.AscentPayload = 1; return(Task.CompletedTask); }
public Task <IPatchBasket <TId, T, int> > SendAsync(IPatchBasket <TId, T, int> basket) { return(new Shaft <IPatchBasket <TId, T, int> >(TraceExporter, TerminalLayer, GetStations <IPatchBasket <TId, T, int> >()) .SendAsync(basket)); }
public Task <IPatchBasket <int, Frog, int> > SendAsync(IPatchBasket <int, Frog, int> basket) { return(new Shaft <IPatchBasket <int, Frog, int> >(TerminalLayer) .Add(CacheLayer) .SendAsync(basket)); }
/// <summary> /// Performs no action /// </summary> /// <param name="basket">A basket</param> /// <param name="visit">The visit the basket is currently making</param> /// <returns>A Task that may be awaited</returns> public Task AscendFromAsync(IPatchBasket basket, IVisit visit) { return(Task.CompletedTask); }
/// <summary> /// If the user is not allowed to "Patch" T's then an UnauthorizedAccessException will be thrown. /// </summary> /// <param name="basket">The request</param> /// <param name="visit">The visit the basket is currently making</param> /// <returns>A Task that may be awaited</returns> public Task DescendToAsync(IPatchBasket basket, IVisit visit) { EnsureOperationAllowed(Operations.Patch, basket, visit); return(Task.CompletedTask); }