Example #1
0
        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");
        }
Example #2
0
        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;
            }
        }