public async Task TryHandlePreItem <TSource>(MutationActionItem <TSource> mutationActionItem) { switch (mutationActionItem.Action) { case MutationActions.Delete: await RemoveEdgeConnections(mutationActionItem.Item, mutationActionItem.RequestContext); break; case MutationActions.DeleteAll: await DeleteAllEdgeConnectionsOfType <TSource>(mutationActionItem.RequestContext); break; default: // Do nothing. We are not handling. break; } }
protected string GetBody <TSource>(MutationActionItem <TSource> mutationActionItem) { if (mutationActionItem.Item != null) { return(JsonConvert.SerializeObject(mutationActionItem.Item)); } if (mutationActionItem.Items != null) { return(JsonConvert.SerializeObject(mutationActionItem.Items)); } if (mutationActionItem.ObjectItem != null) { return(JsonConvert.SerializeObject(mutationActionItem.ObjectItem)); } if (mutationActionItem.ObjectItems != null) { return(JsonConvert.SerializeObject(mutationActionItem.ObjectItems)); } return(""); }
public Task TryHandlePostItem <TSource>(MutationActionItem <TSource> mutationActionItem) { _logger.LogInformation($"FooMutationPostAction {GetBody(mutationActionItem)}"); return(Task.CompletedTask); }
public async Task TryHandlePostItem <TSource>(MutationActionItem <TSource> mutationActionItem) { Type mappedSearchType; bool shouldHandle = false; if (mutationActionItem.ObjectItem != null) { shouldHandle = InternalTryGetMappedSearchType(mutationActionItem.ObjectItem.GetType(), out mappedSearchType); } else { if (mutationActionItem.ObjectItems != null && mutationActionItem.ObjectItems.Count > 0) { shouldHandle = InternalTryGetMappedSearchType(mutationActionItem.ObjectItems.First().GetType(), out mappedSearchType); } else { shouldHandle = TryGetMappedSearchType <TSource>(out mappedSearchType); } } if (!shouldHandle) { return; } if (mutationActionItem.Action == MutationActions.DeleteAll) { await mutationActionItem.RepositoryProvider.GetRepository(mappedSearchType) .DeleteAllAsync(mappedSearchType, mutationActionItem.RequestContext); return; } if (mutationActionItem.Action == MutationActions.BatchCreateOrUpdate || mutationActionItem.Action == MutationActions.BatchCreate) { List <object> mappedInstances; if (mutationActionItem.Items != null) { var type = mutationActionItem.Items.First().GetType(); mappedInstances = mutationActionItem.Items.Select(item => Convert.ChangeType(CreateInstanceFromMap(item, type.Name), mappedSearchType)).ToList(); } else { var type = mutationActionItem.ObjectItems.First().GetType(); mappedInstances = mutationActionItem.ObjectItems.Select(item => Convert.ChangeType(CreateInstanceFromMap(item, type.Name), mappedSearchType)).ToList(); } await mutationActionItem.RepositoryProvider.GetRepository(mappedSearchType) .BatchAddAsync(mappedSearchType, mappedInstances, mutationActionItem.RequestContext); return; } object oMap = mutationActionItem.ObjectItem != null ? mutationActionItem.ObjectItem : mutationActionItem.Item; if (oMap == null) { return; } var mappedInstance = CreateInstanceFromMap(oMap, oMap.GetType().Name); switch (mutationActionItem.Action) { case MutationActions.Create: case MutationActions.CreateOrUpdate: // Search repository does not support createOrUpdate, so we are just using Create. await mutationActionItem.RepositoryProvider.GetRepository(mappedSearchType) .AddAsync(mappedSearchType, mappedInstance, mutationActionItem.RequestContext); break; case MutationActions.Update: await mutationActionItem.RepositoryProvider.GetRepository(mappedSearchType) .UpdateAsync(mappedSearchType, mappedInstance, mutationActionItem.RequestContext); break; case MutationActions.Delete: await mutationActionItem.RepositoryProvider.GetRepository(mappedSearchType) .DeleteAsync(mappedSearchType, mappedInstance, mutationActionItem.RequestContext); break; default: // Do nothing. break; } }