This commit is contained in:
@@ -71,30 +71,15 @@ func (m *users) List(
|
||||
}
|
||||
|
||||
// PostList returns a paginated list of posts for a user
|
||||
func (m *users) PostList(
|
||||
ctx context.Context,
|
||||
userId int64,
|
||||
pagination *requests.Pagination,
|
||||
conds ...gen.Condition,
|
||||
) (*requests.Pager, error) {
|
||||
pagination.Format()
|
||||
// stmt := SELECT(tbl.AllColumns).
|
||||
// FROM(tbl.
|
||||
// RIGHT_JOIN(
|
||||
// tblUserPosts,
|
||||
// tblUserPosts.PostID.EQ(tbl.ID),
|
||||
// ),
|
||||
// ).
|
||||
// WHERE(CondTrue(cond...)).
|
||||
// ORDER_BY(tblUserPosts.ID.DESC()).
|
||||
// LIMIT(pagination.Limit).
|
||||
// OFFSET(pagination.Offset)
|
||||
// m.log().Infof("sql: %s", stmt.DebugSql())
|
||||
func (m *users) PostList(ctx context.Context, userId int64, filter *dto.PostListQuery) (*requests.Pager, error) {
|
||||
filter.Format()
|
||||
|
||||
tbl, query := models.UserPostQuery.QueryContext(ctx)
|
||||
query = query.Order(tbl.CreatedAt.Desc())
|
||||
|
||||
pagePosts, cnt, err := query.Select(tbl.PostID).
|
||||
Where(tbl.UserID.Eq(userId)).
|
||||
FindByPage(int(pagination.Offset()), int(pagination.Limit))
|
||||
FindByPage(int(filter.Offset()), int(filter.Limit))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -105,10 +90,21 @@ func (m *users) PostList(
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
itemMap := lo.KeyBy(items, func(item *models.Post) int64 { return item.ID })
|
||||
|
||||
tmpItems := []*models.Post{}
|
||||
|
||||
for _, id := range postIds {
|
||||
if i, ok := itemMap[id]; ok {
|
||||
tmpItems = append(tmpItems, i)
|
||||
}
|
||||
}
|
||||
|
||||
return &requests.Pager{
|
||||
Items: items,
|
||||
Items: tmpItems,
|
||||
Total: cnt,
|
||||
Pagination: *pagination,
|
||||
Pagination: *filter.Pagination,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user