public async Task DeleteDocument <T>(string documentId)
        {
            var fullDocumentId = DocumentDbHelpers.GetFullDocumentId <T>(documentId);

            if (_cache.TryGetValue(fullDocumentId, out var document))
            {
                _cache.Remove(fullDocumentId);
            }
            await _innerDocumentDbService.DeleteDocument <T>(documentId);
        }
        public async Task <T> GetDocument <T>(string documentId)
        {
            T   document;
            var fullDocumentId = DocumentDbHelpers.GetFullDocumentId <T>(documentId);

            if (!_cache.TryGetValue(fullDocumentId, out document))
            {
                document = await _innerDocumentDbService.GetDocument <T>(documentId);

                if (document != null)
                {
                    var cacheEntryOptions = new MemoryCacheEntryOptions()
                                            .SetSlidingExpiration(TimeSpan.FromSeconds(30));
                    _cache.Set(fullDocumentId, document, cacheEntryOptions);
                }
            }
            return(document);
        }
 private string GetFullDocumentId <T>(string documentId)
 {
     return(DocumentDbHelpers.GetFullDocumentId <T>(documentId));
 }