private async Task <ActivityTableEntity> GetActivityPerUserEntityAsync(string userId, DateTime timestamp) { var rowKey = ActivityKeyFactory.CreatePerUserRowKey(timestamp); var result = await this.storageAccessService.GetTableEntityAsync <ActivityTableEntity>(Constants.TableNames.ActivityPerUser, userId, rowKey); return(result); }
public async Task <ActivityEntity> AddActivityAsync(ActivityEntity activity) { string activityFeedRowKey = ActivityKeyFactory.CreateRowKey(activity.Timestamp, activity.UserId); var entity = new ActivityTableEntity(ActivityKeyFactory.CreatePartitionKey(activity.Timestamp), activityFeedRowKey, activity); await this.storageAccessService.InsertAsync(Constants.TableNames.Activity, entity); string activityPerUserRowKey = ActivityKeyFactory.CreatePerUserRowKey(activity.Timestamp); var perUserEntity = new ActivityTableEntity(activity.UserId, activityPerUserRowKey, activity); await this.storageAccessService.InsertAsync(Constants.TableNames.ActivityPerUser, perUserEntity); await AddToPersonalizedFeedAsync(activity.UserId, activity); return(activity); }
public async Task <IEnumerable <ActivityEntity> > GetUserActivitiesAsync(string userId, DateTime startTimeUtc, ActivityType activityType = ActivityType.None) { string startRowKey = ActivityKeyFactory.CreatePerUserRowKey(startTimeUtc); var whereClause = TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, userId), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, startRowKey)); if (activityType != Core.Activity.Domain.ActivityType.None) { whereClause = TableQuery.CombineFilters(whereClause, TableOperators.And, TableQuery.GenerateFilterCondition(nameof(ActivityTableEntity.ActivityType), QueryComparisons.Equal, activityType.ToString())); } var result = await storageAccessService.QueryTableAsync <JsonTableEntity <ActivityEntity> >(Constants.TableNames.ActivityPerUser, whereClause); var activitys = result.Select(a => a.Entity).ToList(); return(activitys); }