public async Task <string> SaveAsync(IStreamData streamData)
        {
            var newEntity = StreamEntity.Create(streamData);
            await _streamsTableStorage.InsertAsync(newEntity);

            return(newEntity.Id);
        }
        public async Task <IStreamData> GetAsync(string id)
        {
            var partitionKey = StreamEntity.GeneratePartitionKey();
            var rowKey       = StreamEntity.GenerateRowKey(id);

            return(await _streamsTableStorage.GetDataAsync(partitionKey, rowKey));
        }
        public async Task DeleteAsync(string id)
        {
            var partitionKey = StreamEntity.GeneratePartitionKey();
            var rowKey       = StreamEntity.GenerateRowKey(id);

            await _streamsTableStorage.DeleteAsync(partitionKey, rowKey);
        }
        public Task UpdateAsync(IStreamData streamData)
        {
            var partitionKey = StreamEntity.GeneratePartitionKey();
            var rowKey       = StreamEntity.GenerateRowKey(streamData.Id);

            return(_streamsTableStorage.ReplaceAsync(partitionKey, rowKey, itm =>
            {
                itm.Update(streamData);
                return itm;
            }));
        }
        public static StreamEntity Create(IStreamData src)
        {
            var id     = Guid.NewGuid().ToString("N");
            var result = new StreamEntity
            {
                PartitionKey = GeneratePartitionKey(),
                RowKey       = id,
                Id           = id,
                Name         = src.Name,
                Stream       = src.Stream,
                AuthorId     = src.AuthorId,
                AuthorEmail  = src.AuthorEmail
            };

            return(result);
        }
        public async Task <IEnumerable <IStreamData> > GetStreamsAsync()
        {
            var partitionKey = StreamEntity.GeneratePartitionKey();

            return(await _streamsTableStorage.GetDataAsync(partitionKey));
        }