예제 #1
0
        public async Task CreateIndex(CreateIndexParameters indexParm)
        {
            if (string.IsNullOrEmpty(indexParm.Taxonomy))
            {
                Exception error = new Exception($"Taxonomy not selected");
                throw error;
            }
            Sources           sr     = new Sources(azureConnectionString);
            ConnectParameters target = await sr.GetSourceParameters(indexParm.TargetName);

            ConnectParameters source = await sr.GetSourceParameters(indexParm.SourceName);

            Indexer index       = new Indexer(azureConnectionString);
            int     parentNodes = await index.Initialize(target, source, indexParm.Taxonomy, indexParm.Filter);

            List <ParentIndexNodes> nodes = await index.IndexParent(parentNodes, indexParm.Filter);

            for (int j = 0; j < nodes.Count; j++)
            {
                ParentIndexNodes node = nodes[j];
                for (int i = 0; i < node.NodeCount; i++)
                {
                    await index.IndexChildren(j, i, node.ParentNodeId);
                }
            }
            index.CloseIndex();
        }
예제 #2
0
        public static async Task <IActionResult> MakeIndex(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("CreateIndex: Starting");
            try
            {
                string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                CreateIndexParameters indexParm = JsonConvert.DeserializeObject <CreateIndexParameters>(requestBody);
                if (indexParm == null)
                {
                    log.LogError("CreateIndex: error missing index parameters");
                    return(new BadRequestObjectResult("Error missing index parameters"));
                }
                string          storageAccount = Common.Helpers.Common.GetStorageKey(req);
                IndexManagement im             = new IndexManagement(storageAccount);
                await im.CreateIndex(indexParm);
            }
            catch (Exception ex)
            {
                log.LogError($"CreateIndex: {ex}");
                return(new BadRequestObjectResult($"Error creating index: {ex}"));
            }

            log.LogInformation("CreateIndex: Complete");
            return(new OkObjectResult("OK"));
        }
예제 #3
0
        public async Task CreateChildIndexes(CreateIndexParameters iParams)
        {
            var response = await httpService.Post($"{url}/children", iParams);

            if (!response.Success)
            {
                throw new ApplicationException(await response.GetBody());
            }
        }
예제 #4
0
        public async Task <List <ParentIndexNodes> > CreateParentNodes(CreateIndexParameters iParameters)
        {
            var response = await httpService.Post <CreateIndexParameters, List <ParentIndexNodes> >(url, iParameters);

            if (!response.Success)
            {
                throw new ApplicationException(await response.GetBody());
            }

            return(response.Response);
        }
예제 #5
0
 public async Task <ActionResult> Create(CreateIndexParameters iParameters)
 {
     logger.LogInformation("CreateIndexController: Starting index create");
     try
     {
         string          storageAccount = Common.Helpers.Common.GetStorageKey(Request);
         IndexManagement im             = new IndexManagement(storageAccount);
         await im.CreateIndex(iParameters);
     }
     catch (Exception ex)
     {
         logger.LogInformation($"CreateIndexController: Error message = {ex}");
         return(BadRequest(ex.ToString()));
     }
     return(NoContent());
 }
예제 #6
0
        public async Task Create(CreateIndexParameters iParameters)
        {
            if (string.IsNullOrEmpty(baseUrl))
            {
                url = "api/createindex";
            }
            else
            {
                url = baseUrl.BuildFunctionUrl("CreateIndex", $"", apiKey);
            }
            Console.WriteLine($"Create index: {url}");
            var response = await httpService.Post(url, iParameters);

            if (!response.Success)
            {
                throw new ApplicationException(await response.GetBody());
            }
        }
        public async Task <ActionResult> CreateChildren(CreateIndexParameters iParams)
        {
            if (iParams == null)
            {
                return(BadRequest());
            }

            try
            {
                IndexBuilder      iBuilder  = new IndexBuilder();
                string            json      = GetJsonIndexFile();
                ConnectParameters connector = Common.GetConnectParameters(connectionString, container,
                                                                          iParams.DataConnector);
                iBuilder.InitializeIndex(connector, json);
                iBuilder.PopulateIndex(iParams.ParentNodeNumber, iParams.ParentNumber, iParams.ParentNodeId);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }

            return(NoContent());
        }
예제 #8
0
        public static async Task <string> CreateIndex([ActivityTrigger] DataOpParameters pipe, ILogger log)
        {
            log.LogInformation($"CreateIndex: Starting");
            CreateIndexParameters parms = JObject.Parse(pipe.JsonParameters).ToObject <CreateIndexParameters>();

            try
            {
                Sources           sr     = new Sources(pipe.StorageAccount);
                ConnectParameters target = await sr.GetSourceParameters(parms.TargetName);

                ConnectParameters source = await sr.GetSourceParameters(parms.SourceName);

                Indexer index       = new Indexer(pipe.StorageAccount);
                int     parentNodes = await index.Initialize(target, source, parms.Taxonomy, parms.Filter);

                List <ParentIndexNodes> nodes = await index.IndexParent(parentNodes, parms.Filter);

                for (int j = 0; j < nodes.Count; j++)
                {
                    ParentIndexNodes node = nodes[j];
                    for (int i = 0; i < node.NodeCount; i++)
                    {
                        await index.IndexChildren(j, i, node.ParentNodeId);
                    }
                }

                index.CloseIndex();
            }
            catch (Exception ex)
            {
                log.LogInformation($"CreateIndex: Serious exception {ex}");
            }

            log.LogInformation($"CreateIndex: Complete");
            return($"Hello {pipe.Name}!");
        }
        public async Task <ActionResult <List <ParentIndexNodes> > > CreateParentNodes(CreateIndexParameters iParameters)
        {
            if (iParameters == null)
            {
                return(BadRequest());
            }
            List <ParentIndexNodes> nodes = new List <ParentIndexNodes>();

            try
            {
                IndexBuilder      iBuilder  = new IndexBuilder();
                string            json      = GetJsonIndexFile();
                ConnectParameters connector = Common.GetConnectParameters(connectionString, container,
                                                                          iParameters.DataConnector);
                iBuilder.InitializeIndex(connector, json);
                iBuilder.CreateRoot();
                int parentNodes = iBuilder.JsonIndexArray.Count;
                for (int k = 0; k < parentNodes; k++)
                {
                    JToken token       = iBuilder.JsonIndexArray[k];
                    int    parentCount = iBuilder.GetObjectCount(token, k);
                    if (parentCount > 0)
                    {
                        int parentNodeId = iBuilder.CreateParentNodeIndex();
                        nodes.Add(new ParentIndexNodes()
                        {
                            NodeCount    = parentCount,
                            ParentNodeId = parentNodeId,
                            Name         = (string)token["DataName"]
                        });
                    }
                }
                iBuilder.CloseIndex();
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }
            return(nodes);
        }