protected override async Task <IEnumerable <Activity> > ExecuteAsync(QueryTemplateContext <GetActivityStreamByUserId> context) { var r = RethinkDB.R; var queryParam = context.Parameter; var query = _activityTable .OrderBy() .OptArg("index", RethinkDB.R.Desc(nameof(Activity.CreatedAt))); ReqlExpr condtQuery; if (queryParam.IncludeAllUserActivities) { condtQuery = query.Filter(x => GetFilter(x, queryParam)); } else { condtQuery = query.Filter(x => x.GetField(nameof(Activity.OwnerId)).Eq(queryParam.UserId)); } if (queryParam.Types.Any()) { condtQuery = condtQuery.Filter(x => r.Expr(queryParam.Types).Contains(x.GetField(nameof(Activity.Type)))); } var finalQuery = condtQuery.Merge(activity => r.HashMap(nameof(Activity.Owner), GetUserFullName(activity.GetField(nameof(Activity.OwnerId))))) .Merge(activity => r.HashMap(nameof(Activity.ItemOwner), GetUserFullName(activity.GetField(nameof(Activity.ItemOwnerId))))) .Merge(activity => r.HashMap(nameof(Activity.IdeaOwner), GetUserFullName(activity.GetField(nameof(Activity.IdeaOwnerId))))); var results = await finalQuery.RunCursorAsync <Activity>(context.Connection); return(results.ToList()); }
protected override async Task <IEnumerable <TaskItemState> > ExecuteAsync(QueryTemplateContext <GetTaskItemStatesByBoardId> context) { var r = RethinkDB.R; var queryParam = context.Parameter; var query = r.Table(nameof(TaskItemState)) .Filter(x => x.GetField(nameof(TaskItem.TaskBoardId)).Eq(queryParam.TaskBoardId)); return((await query.RunCursorAsync <TaskItemState>(context.Connection)).ToList()); }
protected override async Task<IEnumerable<TaskItem>> ExecuteAsync(QueryTemplateContext<GetTaskBoardTasksByStateId> context) { var r = RethinkDB.R; var queryParam = context.Parameter; var query = r.Table(nameof(TaskItem)) .Filter(x => x.GetField(nameof(TaskItem.TaskBoardId)).Eq(queryParam.TaskBoardId)); if (!string.IsNullOrEmpty(queryParam.StateId)) { query = query.Filter(x => x.GetField(nameof(TaskItem.StateId)).Eq(queryParam.StateId)); } return (await query.RunCursorAsync<TaskItem>(context.Connection)).ToList(); }