private static string GetFollowType(List <TagCriteria> criteria, Enums.FollowMode followMode) { foreach (var criterion in criteria) { if (followMode == Enums.FollowMode.Feed) { if (criterion.feed) { return("partial"); } } else if (followMode == Enums.FollowMode.Notification) { if (criterion.notifications) { return("partial"); } } } return("none"); }
public static async Task <List <TrackFollow> > GetTrackFollows(string trackId, Enums.FollowMode followMode = Enums.FollowMode.Feed) { List <TrackFollowTableEntity> results = await TableStorageRepository.GetTrackFollows(trackId, followMode); List <TrackFollow> trackFollows = new List <TrackFollow>(); foreach (TrackFollowTableEntity result in results) { trackFollows.Add(TableEntityToTrackFollow(result)); } return(trackFollows); }
// follows internal static async Task <List <TrackFollowTableEntity> > GetTrackFollows(string trackId, Enums.FollowMode followMode = Enums.FollowMode.Feed) { try { // reference table CloudTable table = tableClient.GetTableReference(TrackFollowsTable); await table.CreateIfNotExistsAsync(); // predicates string partitionPredicate = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, trackId); string feedPredicate = TableQuery.GenerateFilterCondition(followMode == Enums.FollowMode.Feed ? "feed_follow_type" : "notifications_follow_type", QueryComparisons.NotEqual, "none"); // query track subscriptions TableQuery <TrackFollowTableEntity> query = new TableQuery <TrackFollowTableEntity>().Where(TableQuery.CombineFilters(partitionPredicate, TableOperators.And, feedPredicate)); List <TrackFollowTableEntity> follows = new List <TrackFollowTableEntity>(); TableContinuationToken token = null; do { var queryResponse = await table.ExecuteQuerySegmentedAsync(query, token); token = queryResponse.ContinuationToken; follows.AddRange(queryResponse.Results); }while (token != null); return(follows); } catch { throw; } }