public async Task StoreEpisodeStatus(int episodeId, SrStoredEpisodeStatus episode)
        {
            await _episodesStatusTable.CreateIfNotExistsAsync();

            var entity = new SrStoredEpisodeStatusEntity(episodeId, episode);
            var insertOrMergeOperation = TableOperation.InsertOrMerge(entity);
            await _episodesStatusTable.ExecuteAsync(insertOrMergeOperation);
        }
            public SrStoredEpisodeStatusEntity(int episodeId, SrStoredEpisodeStatus episode)
            {
                PartitionKey = "SrStoredEpisodeStatus";
                RowKey       = episodeId.ToString("D");

                EpisodeId = episodeId;
                Phase     = episode.Phase;
                State     = episode.State;
                Info      = episode.Info;
            }
        public async Task <SrStoredEpisodeStatus> GetEpisodeStatus(int episodeId)
        {
            await _episodesStatusTable.CreateIfNotExistsAsync();

            var retrieveOperation = TableOperation.Retrieve <SrStoredEpisodeStatusEntity>("SrStoredEpisodeStatus", episodeId.ToString("D"));
            var result            = await _episodesStatusTable.ExecuteAsync(retrieveOperation);

            var srStoredEpisodeStatusEntity = result.Result as SrStoredEpisodeStatusEntity;

            if (srStoredEpisodeStatusEntity == null)
            {
                return(SrStoredEpisodeStatus.Unknown(episodeId));
            }

            return(new SrStoredEpisodeStatus
            {
                EpisodeId = srStoredEpisodeStatusEntity.EpisodeId,

                Phase = srStoredEpisodeStatusEntity.Phase,
                State = srStoredEpisodeStatusEntity.State,
                Info = srStoredEpisodeStatusEntity.Info
            });
        }