public bool CreateIndex(IIndexCreateRequest request)
        {
            // TODO Validation
            if (request is null)
            {
                Logger.LogError("Definition is invalid");
                throw new ArgumentException("Argument \"definition\" is null or not of type ElasticIndexDefinition");
            }
            var node     = new Uri(request.IndexerEndpoint);
            var fileText = System.IO.File.ReadAllText(request.IndexDefinitionFilePath);

            var settings = new ConnectionSettings(node);
            var postData = PostData.String(fileText);
            var client   = new ElasticLowLevelClient(settings);
            var response = client.DoRequest <StringResponse>(HttpMethod.PUT, request.IndexName, postData);

            if (response.HttpStatusCode.HasValue)
            {
                // TODO Good or bad?
                Logger.LogInformation($"StatusCode {response.HttpStatusCode}");
            }
            Logger.LogDebug(response.DebugInformation);
            Logger.LogInformation(response.Body);
            return(response.Success);
        }
        public void SaveObject(Object obj)
        {
            Type typeObj = obj.GetType();
            if (!System.Configuration.ConfigurationManager.AppSettings["StorageType"].Equals("SQL"))
            {
                var node = new Uri(blueChappieSetttings.BlueChappieElasticServer + "/" + typeObj.Name + "lib/");
                var config = new ConnectionConfiguration(node);
                var client = new ElasticLowLevelClient(config);
                string imgInfo = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
                PostData<object> postingData = imgInfo;
                dynamic result0 = client.DoRequest<object>(HttpMethod.PUT, typeObj.Name, postingData);
            }

            else

            {
                System.Data.DataSet dataSet = new System.Data.DataSet();
                System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection("Database=BlueChappie;Server=localhost;uid=ProTrack2;pwd=protrack123;Connect Timeout=30;Min Pool Size=5;Max Pool Size=900;");
                System.Data.SqlClient.SqlDataAdapter sqlDataAdapter = new System.Data.SqlClient.SqlDataAdapter();
                sqlDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand("SELECT TOP 0 * FROM " + typeObj.Name + "lib with (nolock)", sqlConnection);
                sqlDataAdapter.Fill(dataSet, typeObj.Name + "lib");
                System.Data.DataTable tbl = dataSet.Tables[0];
                System.Data.DataRow newRow = tbl.Rows.Add();
                foreach (System.Data.DataColumn fld in tbl.Columns)
                {
                    foreach (PropertyInfo imgFields in typeObj.GetProperties())
                    {
                        if (imgFields.Name.Equals(fld.ColumnName))
                        {
                            if (!fld.ReadOnly)
                            {
                                newRow.SetField(fld.ColumnName.ToString(), imgFields.GetValue(obj));
                            }
                        }
                    }
                }
                System.Data.DataRow dsRow = dataSet.Tables[typeObj.Name + "lib"].NewRow();
                dsRow = newRow;
                new SqlCommandBuilder(sqlDataAdapter);
                int result = sqlDataAdapter.Update(dataSet, typeObj.Name + "lib");
            }
        }