/// <summary> /// Determines whether the cache contains the specified experience identifier. /// </summary> /// <param name="experienceId">The experience identifier.</param> /// <returns>A <see cref="Task{System.Boolean}" /> containing true if the identifier is found; otherwise false.</returns> public async Task <bool> ContainsAsync(long experienceId) { await this.InitializeAsync(); TableResult result = await this.experiencesCache.ExecuteAsync(TableOperation.Retrieve <ExperienceCacheEntity>((experienceId / CosmosExperienceCache.partitionSize).ToString(), experienceId.ToString())); ExperienceCacheEntity experienceEntity = result.Result as ExperienceCacheEntity; return(experienceEntity != null); }
/// <summary> /// Sets the experience key asynchronously. /// </summary> /// <param name="experienceKey">The experience key.</param> /// <returns>An <see cref="Task{System.Int64}" /> representing the experience identifier.</returns> public async Task <string> SetExperienceKeyAsync(string experienceName, string experienceValues) { await this.InitializeAsync(); ExperienceCacheEntity experienceEntity = new ExperienceCacheEntity(CosmosExperienceCache.partitionSize, experienceName) { ExperienceValues = experienceValues, }; await this.experiencesCache.ExecuteAsync(TableOperation.InsertOrReplace(experienceEntity)); return(experienceName); }
/// <summary> /// Gets the experience key asynchronously. /// </summary> /// <param name="experienceId">The experience identifier.</param> /// <exception cref="KeyNotFoundException"></exception> /// <returns>The experience key.</returns> public async Task <string> GetExperienceKeyAsync(string experienceName) { await this.InitializeAsync(); //TableResult result = await this.experiencesCache.ExecuteAsync(TableOperation.Retrieve<ExperienceCacheEntity>((experienceId / CosmosExperienceCache.partitionSize).ToString(), experienceId.ToString())); TableResult result = await this.experiencesCache.ExecuteAsync(TableOperation.Retrieve <ExperienceCacheEntity>("0", experienceName)); ExperienceCacheEntity experienceEntity = result.Result as ExperienceCacheEntity; if (experienceEntity != null) { return(experienceEntity.ExperienceValues); } throw new KeyNotFoundException($"The {nameof(experienceName)} {experienceName} could not be found."); }
/// <summary> /// Deletes the experience key asynchronously. /// </summary> /// <param name="experienceId">The experience identifier.</param> /// <exception cref="KeyNotFoundException"></exception> /// <returns>The experience key.</returns> public async Task <string> DeleteExperienceKeyAsync(string experienceName) { await this.InitializeAsync(); ExperienceCacheEntity experienceCacheEntity = new ExperienceCacheEntity(); experienceCacheEntity.RowKey = experienceName; experienceCacheEntity.PartitionKey = "0"; experienceCacheEntity.ETag = "*"; //TableResult result = await this.experiencesCache.ExecuteAsync(TableOperation.Retrieve<ExperienceCacheEntity>((experienceId / CosmosExperienceCache.partitionSize).ToString(), experienceId.ToString())); TableResult result = await this.experiencesCache.ExecuteAsync(TableOperation.Delete(experienceCacheEntity)); ExperienceCacheEntity experienceEntity = result.Result as ExperienceCacheEntity; if (experienceEntity != null) { return(experienceName); } throw new KeyNotFoundException($"The {nameof(experienceName)} {experienceName} could not be found."); }