/// <summary>
        /// Creates an index
        /// </summary>
        /// <param name="collection">The collection name</param>
        /// <param name="data">Index details</param>
        /// <param name="baseResult"></param>
        /// <returns>EnsureIndexResult</returns>
        public async Task <EnsureIndexResult> EnsureIndexAsync(string collection, EnsureIndexData data, Action <BaseResult> baseResult = null)
        {
            var command = new HttpCommand(this.db)
            {
                Api    = CommandApi.Index,
                Method = HttpMethod.Post,
                Query  = new Dictionary <string, string>()
            };

            command.Query.Add("collection", collection);

            var result = await command.RequestMergedResult <EnsureIndexResult>(data).ConfigureAwait(false);

            baseResult?.Invoke(result.BaseResult);

            return(result.Result);
        }
        /// <summary>
        /// Creates an index
        /// </summary>
        /// <typeparam name="TCollection">Collection Type</typeparam>
        /// <param name="data">Index details</param>
        /// <param name="baseResult"></param>
        /// <returns>EnsureIndexResult</returns>
        public async Task <EnsureIndexResult> EnsureIndexAsync <TCollection>(EnsureIndexData data, Action <BaseResult> baseResult = null)
        {
            string collection = db.SharedSetting.Collection.ResolveCollectionName <TCollection>();

            return(await EnsureIndexAsync(collection, data, baseResult).ConfigureAwait(false));
        }
 /// <summary>
 /// Creates an index
 /// </summary>
 /// <param name="collection">The collection name</param>
 /// <param name="data">Index details</param>
 /// <param name="baseResult"></param>
 /// <returns>EnsureIndexResult</returns>
 public EnsureIndexResult EnsureIndex(string collection, EnsureIndexData data, Action <BaseResult> baseResult = null)
 {
     return(EnsureIndexAsync(collection, data, baseResult).ResultSynchronizer());
 }
 /// <summary>
 /// Creates an index
 /// </summary>
 /// <typeparam name="TCollection">Collection Type</typeparam>
 /// <param name="data">Index details</param>
 /// <param name="baseResult"></param>
 /// <returns>EnsureIndexResult</returns>
 public EnsureIndexResult EnsureIndex <TCollection>(EnsureIndexData data, Action <BaseResult> baseResult = null)
 {
     return(EnsureIndexAsync <TCollection>(data, baseResult).ResultSynchronizer());
 }