Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit66f7004

Browse files
committed
fix(article): comments_participants_count logic
1 parentde9c30c commit66f7004

File tree

2 files changed

+34
-19
lines changed

2 files changed

+34
-19
lines changed

‎lib/groupher_server/cms/delegates/comment_curd.ex‎

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -110,24 +110,40 @@ defmodule GroupherServer.CMS.Delegate.CommentCurd do
110110
@specpaged_comments_participants(T.article_thread(),Integer.t(),T.paged_filter())::
111111
{:ok,T.paged_users()}
112112
defpaged_comments_participants(thread,article_id,filters)do
113-
%{page:page,size:size}=filters
113+
with{:ok,thread_query}<-match(thread,:query,article_id),
114+
{:ok,info}<-match(thread),
115+
{:ok,article}<-ORM.find(info.model,article_id),
116+
{:ok,paged_data}<-do_paged_comments_participants(thread_query,filters)do
117+
# check participants_count if history data do not match
118+
casearticle.comments_participants_count!==paged_data.total_countdo
119+
true->
120+
article|>ORM.update(%{comments_participants_count:paged_data.total_count})
121+
122+
false->
123+
{:ok,:pass}
124+
end
114125

115-
with{:ok,thread_query}<-match(thread,:query,article_id)do
116-
Comment
117-
|>where(^thread_query)
118-
|>QueryBuilder.filter_pack(Map.merge(filters,%{sort::desc_inserted}))
119-
|>join(:inner,[c],ainassoc(c,:author))
120-
|>distinct([c,a],a.id)
121-
# group_by
122-
|>group_by([c,a],a.id)
123-
|>group_by([c,a],c.inserted_at)
124-
|>group_by([c,a],c.id)
125-
|>select([c,a],a)
126-
|>ORM.paginator(~m(page size)a)
127-
|>done()
126+
paged_data|>done
128127
end
129128
end
130129

130+
defpdo_paged_comments_participants(query,filters)do
131+
%{page:page,size:size}=filters
132+
133+
Comment
134+
|>where(^query)
135+
|>QueryBuilder.filter_pack(Map.merge(filters,%{sort::desc_inserted}))
136+
|>join(:inner,[c],ainassoc(c,:author))
137+
|>distinct([c,a],a.id)
138+
# group_by
139+
|>group_by([c,a],a.id)
140+
|>group_by([c,a],c.inserted_at)
141+
|>group_by([c,a],c.id)
142+
|>select([c,a],a)
143+
|>ORM.paginator(~m(page size)a)
144+
|>done()
145+
end
146+
131147
@doc"""
132148
creates a comment for article like psot, job ...
133149
"""
@@ -273,10 +289,10 @@ defmodule GroupherServer.CMS.Delegate.CommentCurd do
273289

274290
# add participator to article-like(Post, Job ...) and update count
275291
defadd_participant_to_article(%{comments_participants:participants}=article,%User{}=user)do
276-
total_participants=participants|>List.insert_at(0,user)|>Enum.uniq_by(&&1.id)
292+
cur_participants=participants|>List.insert_at(0,user)|>Enum.uniq_by(&&1.id)
277293

278-
latest_participants=total_participants|>Enum.slice(0,@max_participator_count)
279-
total_participants_count=length(total_participants)
294+
latest_participants=cur_participants|>Enum.slice(0,@max_participator_count)
295+
total_participants_count=article.comments_participants_count+1
280296

281297
article
282298
|>Ecto.Changeset.change()

‎test/groupher_server/seeds/articles_seed_test.exs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ defmodule GroupherServer.Test.Seeds.Articles do
3434
{:ok,paged_comments}=
3535
CMS.paged_comments(:post,ramdom_post.id,%{page:1,size:10},:timeline)
3636

37-
IO.inspect(paged_comments,label:"paged_comments -> ")
38-
37+
# IO.inspect(paged_comments, label: "paged_comments -> ")
3938
assertpaged_comments.total_count!==0
4039
end
4140

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp