public async Task OpenIndex <T>(IndexType indexType) where T : ISearchable
        {
            var tName    = typeof(T).Name;
            var existing = await this.GetIndexNameByType <T>(indexType);

            if (existing.Success)
            {
                return;
            }

            var indexName = $"{tName}-{_dateTimeProvider.GetCurrentDateTime():yyyy-MM-dd-hh-mm-ss}".ToLowerInvariant();
            await _searchableIndexRepository.Create(new SearchableIndex(tName, indexName, indexType.ToString()));

            await this.CreateIndex <T>(indexName);
        }
        public async Task <string> ResolveCurrentIndexName <T>()
        {
            var tName = typeof(T).Name;
            var existingActiveIndex =
                await _searchableIndexRepository.GetByTypeAndStatus(tName, IndexStatus.Active.ToString());

            if (existingActiveIndex != null)
            {
                return(existingActiveIndex.Name);
            }

            var indexName = $"{tName}-{_dateTimeProvider.GetCurrentDateTime():yyyy-MM-dd-hh-mm-ss}".ToLowerInvariant();

            await _searchableIndexRepository.Create(new SearchableIndex(tName, indexName, IndexStatus.Active.ToString()));

            return(indexName);
        }