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.

Commitcbc2cab

Browse files
authored
refactor(account): published artiments (#411)
* refactor(renaming): publishd_article_comments -> published_comments* refactor(cms): reuse paged_articles logic* refactor(account): move published logic to CMS
1 parent1d08118 commitcbc2cab

File tree

16 files changed

+93
-89
lines changed

16 files changed

+93
-89
lines changed

‎lib/groupher_server/accounts/accounts.ex‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ defmodule GroupherServer.Accounts do
4747

4848
# publish
4949
defdelegatepaged_published_articles(user,thread,filter),to:Publish
50-
defdelegatepaged_published_article_comments(user,thread,filter),to:Publish
51-
defdelegatepaged_published_article_comments(user,thread),to:Publish
50+
defdelegatepaged_published_comments(user,thread,filter),to:Publish
51+
defdelegatepaged_published_comments(user,thread),to:Publish
5252
defdelegateupdate_published_states(user,thread),to:Publish
5353

5454
# fans

‎lib/groupher_server/accounts/delegates/publish.ex‎

Lines changed: 14 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,20 @@ defmodule GroupherServer.Accounts.Delegate.Publish do
33
user followers / following related
44
"""
55
importEcto.Query,warn:false
6-
importHelper.Utils,only:[done:1,ensure:2]
7-
# import Helper.ErrorCode
8-
importShortMaps
6+
importHelper.Utils,only:[ensure:2]
97

10-
importGroupherServer.CMS.Helper.Matcher
8+
aliasGroupherServer.{Accounts,CMS}
9+
aliasAccounts.Model.{Embeds,User}
1110

12-
aliasGroupherServer.Accounts.Model.{Embeds,User}
13-
aliasGroupherServer.CMS.Model.Comment
14-
15-
aliasHelper.{ORM,QueryBuilder}
11+
aliasHelper.ORM
1612

1713
@default_metaEmbeds.UserMeta.default_meta()
1814

1915
@doc"""
2016
get paged published contets of a user
2117
"""
2218
defpaged_published_articles(%User{id:user_id},thread,filter)do
23-
with{:ok,info}<-match(thread),
24-
{:ok,user}<-ORM.find(User,user_id)do
25-
do_paged_published_articles(info.model,user,filter)
26-
end
19+
CMS.paged_published_articles(thread,filter,user_id)
2720
end
2821

2922
@doc"""
@@ -32,60 +25,21 @@ defmodule GroupherServer.Accounts.Delegate.Publish do
3225
defupdate_published_states(user_id,thread)do
3326
filter=%{page:1,size:1}
3427

35-
with{:ok,info}<-match(thread),
36-
{:ok,user}<-ORM.find(User,user_id),
37-
{:ok,paged_published_articles}<-do_paged_published_articles(info.model,user,filter)do
38-
articles_count=paged_published_articles.total_count
39-
40-
meta=
41-
ensure(user.meta,@default_meta)|>Map.put(:"published_#{thread}s_count",articles_count)
28+
with{:ok,user}<-ORM.find(User,user_id),
29+
{:ok,paged_articles}<-CMS.paged_published_articles(thread,filter,user_id)do
30+
#
31+
user_meta=ensure(user.meta,@default_meta)
32+
meta=Map.put(user_meta,:"published_#{thread}s_count",paged_articles.total_count)
4233

4334
ORM.update_meta(user,meta)
4435
end
4536
end
4637

47-
defpdo_paged_published_articles(queryable,%User{}=user,%{page:page,size:size}=filter)do
48-
queryable
49-
|>join(:inner,[article],authorinassoc(article,:author))
50-
|>where([article,author],author.user_id==^user.id)
51-
|>select([article,author],article)
52-
|>QueryBuilder.filter_pack(filter)
53-
|>ORM.paginater(~m(page size)a)
54-
|>done()
38+
defpaged_published_comments(user,filter)do
39+
CMS.paged_published_comments(user,filter)
5540
end
5641

57-
defpaged_published_article_comments(%User{id:user_id},%{page:page,size:size}=filter)do
58-
with{:ok,user}<-ORM.find(User,user_id)do
59-
Comment
60-
|>join(:inner,[comment],authorinassoc(comment,:author))
61-
|>where([comment,author],author.id==^user.id)
62-
|>QueryBuilder.filter_pack(filter)
63-
|>ORM.paginater(~m(page size)a)
64-
|>ORM.extract_and_assign_article()
65-
|>done()
66-
end
67-
end
68-
69-
defpaged_published_article_comments(
70-
%User{id:user_id},
71-
thread,
72-
%{page:page,size:size}=filter
73-
)do
74-
with{:ok,user}<-ORM.find(User,user_id)do
75-
thread=thread|>to_string|>String.upcase()
76-
thread_atom=thread|>String.downcase()|>String.to_atom()
77-
78-
article_preload=Keyword.new([{thread_atom,[author::user]}])
79-
query=from(commentinComment,preload:^article_preload)
80-
81-
query
82-
|>join(:inner,[comment],authorinassoc(comment,:author))
83-
|>where([comment,author],author.id==^user.id)
84-
|>where([comment,author],comment.thread==^thread)
85-
|>QueryBuilder.filter_pack(filter)
86-
|>ORM.paginater(~m(page size)a)
87-
|>ORM.extract_and_assign_article()
88-
|>done()
89-
end
42+
defpaged_published_comments(user,thread,filter)do
43+
CMS.paged_published_comments(user,thread,filter)
9044
end
9145
end

‎lib/groupher_server/cms/cms.ex‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ defmodule GroupherServer.CMS do
8686

8787
defdelegatepaged_articles(queryable,filter),to:ArticleCURD
8888
defdelegatepaged_articles(queryable,filter,user),to:ArticleCURD
89+
defdelegatepaged_published_articles(queryable,filter,user),to:ArticleCURD
8990

9091
defdelegatecreate_article(community,thread,attrs,user),to:ArticleCURD
9192
defdelegateupdate_article(article,attrs),to:ArticleCURD
@@ -133,6 +134,9 @@ defmodule GroupherServer.CMS do
133134
defdelegatepaged_comments(thread,article_id,filters,mode),to:CommentCurd
134135
defdelegatepaged_comments(thread,article_id,filters,mode,user),to:CommentCurd
135136

137+
defdelegatepaged_published_comments(user,thread,filters),to:CommentCurd
138+
defdelegatepaged_published_comments(user,filters),to:CommentCurd
139+
136140
defdelegatepaged_folded_article_comments(thread,article_id,filters),to:CommentCurd
137141
defdelegatepaged_folded_article_comments(thread,article_id,filters,user),to:CommentCurd
138142

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

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
9191
end
9292
end
9393

94+
@doc"""
95+
get paged articles
96+
"""
9497
defpaged_articles(thread,filter)do
9598
%{page:page,size:size}=filter
9699

@@ -105,14 +108,26 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
105108
end
106109

107110
defpaged_articles(thread,filter,%User{}=user)do
111+
with{:ok,stateless_paged_articles}<-paged_articles(thread,filter)do
112+
stateless_paged_articles
113+
|>mark_viewer_emotion_states(user)
114+
|>mark_viewer_has_states(user)
115+
|>done()
116+
end
117+
end
118+
119+
@doc"paged published articles for accounts"
120+
defpaged_published_articles(thread,filter,user_id)do
108121
%{page:page,size:size}=filter
109122

110-
with{:ok,info}<-match(thread)do
123+
with{:ok,info}<-match(thread),
124+
{:ok,user}<-ORM.find(User,user_id)do
111125
info.model
112-
|>QueryBuilder.domain_query(filter)
113-
|>QueryBuilder.filter_pack(Map.merge(filter,%{mark_delete:false}))
126+
|>join(:inner,[article],authorinassoc(article,:author))
127+
|>where([article,author],author.user_id==^user.id)
128+
|>select([article,author],article)
129+
|>QueryBuilder.filter_pack(filter)
114130
|>ORM.paginater(~m(page size)a)
115-
|>add_pin_articles_ifneed(info.model,filter)
116131
|>mark_viewer_emotion_states(user)
117132
|>mark_viewer_has_states(user)
118133
|>done()

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,37 @@ defmodule GroupherServer.CMS.Delegate.CommentCurd do
5252
do_paged_comment(thread,article_id,filters,where_query,user)
5353
end
5454

55+
defpaged_published_comments(%User{id:user_id},filter)do
56+
%{page:page,size:size}=filter
57+
58+
Comment
59+
|>join(:inner,[comment],authorinassoc(comment,:author))
60+
|>where([comment,author],author.id==^user_id)
61+
|>QueryBuilder.filter_pack(filter)
62+
|>ORM.paginater(~m(page size)a)
63+
|>ORM.extract_and_assign_article()
64+
|>done()
65+
end
66+
67+
defpaged_published_comments(%User{id:user_id},thread,filter)do
68+
%{page:page,size:size}=filter
69+
70+
thread=thread|>to_string|>String.upcase()
71+
thread_atom=thread|>String.downcase()|>String.to_atom()
72+
73+
article_preload=Keyword.new([{thread_atom,[author::user]}])
74+
query=from(commentinComment,preload:^article_preload)
75+
76+
query
77+
|>join(:inner,[comment],authorinassoc(comment,:author))
78+
|>where([comment,author],comment.thread==^thread)
79+
|>where([comment,author],author.id==^user_id)
80+
|>QueryBuilder.filter_pack(filter)
81+
|>ORM.paginater(~m(page size)a)
82+
|>ORM.extract_and_assign_article()
83+
|>done()
84+
end
85+
5586
defpaged_folded_article_comments(thread,article_id,filters)do
5687
where_query=dynamic([c],c.is_foldedandnotc.is_pinned)
5788
do_paged_comment(thread,article_id,filters,where_query,nil)

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ defmodule GroupherServer.CMS.Delegate.Helper do
5656
defpget_supported_mentions(:comment),do:@supported_comment_emotions
5757
defpget_supported_mentions(_),do:@supported_emotions
5858

59-
defmark_viewer_emotion_states(paged_contents,nil),do:paged_contents
60-
defmark_viewer_emotion_states(%{entries:[]}=paged_contents,_),do:paged_contents
61-
defmark_viewer_emotion_states(paged_contents,nil,:comment),do:paged_contents
59+
defmark_viewer_emotion_states(paged_artiments,nil),do:paged_artiments
60+
defmark_viewer_emotion_states(%{entries:[]}=paged_artiments,_),do:paged_artiments
61+
defmark_viewer_emotion_states(paged_artiments,nil,:comment),do:paged_artiments
6262

6363
@doc"""
6464
mark viewer emotions status for article or comment
6565
"""
6666
defmark_viewer_emotion_states(
67-
%{entries:entries}=paged_contents,
67+
%{entries:entries}=paged_artiments,
6868
%User{}=user,
6969
type\\:article
7070
)do
@@ -84,7 +84,7 @@ defmodule GroupherServer.CMS.Delegate.Helper do
8484
Map.put(article,:emotions,updated_emotions)
8585
end)
8686

87-
%{paged_contents|entries:new_entries}
87+
%{paged_artiments|entries:new_entries}
8888
end
8989

9090
@doc"""

‎lib/groupher_server_web/resolvers/accounts_resolver.ex‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,17 +191,17 @@ defmodule GroupherServerWeb.Resolvers.Accounts do
191191
Accounts.paged_published_articles(cur_user,thread,filter)
192192
end
193193

194-
defpaged_published_article_comments(_root,~m(login filter thread)a,_info)do
194+
defpaged_published_comments(_root,~m(login filter thread)a,_info)do
195195
with{:ok,user_id}<-Accounts.get_userid_and_cache(login)do
196-
Accounts.paged_published_article_comments(%User{id:user_id},thread,filter)
196+
Accounts.paged_published_comments(%User{id:user_id},thread,filter)
197197
else
198198
_->raise_error(:not_exsit,"#{login} not found")
199199
end
200200
end
201201

202-
defpaged_published_article_comments(_root,~m(login filter)a,_info)do
202+
defpaged_published_comments(_root,~m(login filter)a,_info)do
203203
with{:ok,user_id}<-Accounts.get_userid_and_cache(login)do
204-
Accounts.paged_published_article_comments(%User{id:user_id},filter)
204+
Accounts.paged_published_comments(%User{id:user_id},filter)
205205
else
206206
_->raise_error(:not_exsit,"#{login} not found")
207207
end

‎lib/groupher_server_web/schema/account/account_queries.ex‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,13 @@ defmodule GroupherServerWeb.Schema.Account.Queries do
121121
end
122122

123123
@desc"get paged published article comments"
124-
field:paged_published_article_comments,:paged_commentsdo
124+
field:paged_published_comments,:paged_commentsdo
125125
arg(:login,non_null(:string))
126126
arg(:filter,non_null(:paged_filter))
127127
arg(:thread,:thread,default_value::post)
128128

129129
middleware(M.PageSizeProof)
130-
resolve(&R.Accounts.paged_published_article_comments/3)
130+
resolve(&R.Accounts.paged_published_comments/3)
131131
end
132132

133133
published_article_queries()

‎test/groupher_server/accounts/published/published_blogs_test.exs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ defmodule GroupherServer.Test.Accounts.Published.Blog do
8181
end)
8282

8383
filter=%{page:1,size:20}
84-
{:ok,articles}=Accounts.paged_published_article_comments(user,:blog,filter)
84+
{:ok,articles}=Accounts.paged_published_comments(user,:blog,filter)
8585

8686
entries=articles.entries
8787
article=entries|>List.first()

‎test/groupher_server/accounts/published/published_jobs_test.exs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ defmodule GroupherServer.Test.Accounts.Published.Job do
8181
end)
8282

8383
filter=%{page:1,size:20}
84-
{:ok,articles}=Accounts.paged_published_article_comments(user,:job,filter)
84+
{:ok,articles}=Accounts.paged_published_comments(user,:job,filter)
8585

8686
entries=articles.entries
8787
article=entries|>List.first()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp