public async Task <GetPostDbResult> ExecuteAsync(UserId requestorId, PostId postId) { postId.AssertNotNull("postId"); var parameters = new { PostId = postId.Value, RequestorId = requestorId == null ? null : (Guid?)requestorId.Value, }; var query = new StringBuilder(); query.Append(GetNewsfeedDbStatement.GetSqlStart(requestorId, GetNewsfeedDbStatement.SqlQuerySource.FullPost)); query.Append(SqlFilter); query.Append(GetFilesSql); using (var connection = this.connectionFactory.CreateConnection()) { using (var multi = await connection.QueryMultipleAsync(query.ToString(), parameters)) { var post = (await multi.ReadAsync <PreviewNewsfeedPost.Builder>()).SingleOrDefault(); if (post == null) { return(null); } ProcessNewsfeedResults(post); var files = (await multi.ReadAsync <GetPostDbResult.PostFileDbResult.Builder>()).ToList(); return(new GetPostDbResult( post.Build(), files.Select(v => v.Build()).ToList())); } } }
public async Task <GetPreviewNewsfeedDbResult> ExecuteAsync( UserId requestorId, UserId creatorId, IReadOnlyList <ChannelId> requestedChannelIds, DateTime now, DateTime origin, bool searchForwards, NonNegativeInt startIndex, PositiveInt count) { startIndex.AssertNotNull("startIndex"); count.AssertNotNull("count"); var parameters = new { RequestorId = requestorId == null ? null : (Guid?)requestorId.Value, CreatorId = creatorId == null ? null : (Guid?)creatorId.Value, RequestedChannelIds = requestedChannelIds == null ? null : requestedChannelIds.Select(v => v.Value).ToList(), Now = now, Origin = origin, StartIndex = startIndex.Value, Count = count.Value }; using (var connection = this.connectionFactory.CreateConnection()) { var query = new StringBuilder(); query.Append(GetNewsfeedDbStatement.GetSqlStart(requestorId, GetNewsfeedDbStatement.SqlQuerySource.PreviewNewsfeed)); query.Append(GetNewsfeedDbStatement.CreateFilter(null, creatorId, requestedChannelIds, now, origin, searchForwards, startIndex, count, true)); var entities = (await connection.QueryAsync <PreviewNewsfeedPost.Builder>(query.ToString(), parameters)).ToList(); ProcessNewsfeedResults(entities); return(new GetPreviewNewsfeedDbResult(entities.Select(_ => _.Build()).ToList())); } }