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.

Commitaa9fcff

Browse files
authored
chore(clean-up): unused query helper (#382)
* chore(clean-up): unused query helper* chore(clean-up): unused query helper* chore(clean-up): unused query helper wip* chore(clean-up): wip* chore(clean-up): move domain query to helper* chore(clean-up): typo and clean up* chore(clean-up): fmt & update doc
1 parent75ddf68 commitaa9fcff

File tree

4 files changed

+53
-109
lines changed

4 files changed

+53
-109
lines changed

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

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
9090

9191
with{:ok,info}<-match(thread)do
9292
info.model
93-
|>domain_filter_query(filter)
93+
|>QueryBuilder.domain_query(filter)
9494
|>QueryBuilder.filter_pack(Map.merge(filter,%{mark_delete:false}))
9595
|>ORM.paginater(~m(page size)a)
9696
|>add_pin_articles_ifneed(info.model,filter)
@@ -103,7 +103,7 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
103103

104104
with{:ok,info}<-match(thread)do
105105
info.model
106-
|>domain_filter_query(filter)
106+
|>QueryBuilder.domain_query(filter)
107107
|>QueryBuilder.filter_pack(Map.merge(filter,%{mark_delete:false}))
108108
|>ORM.paginater(~m(page size)a)
109109
|>add_pin_articles_ifneed(info.model,filter)
@@ -328,30 +328,6 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
328328
ORM.find_by(Author,user_id:changeset.data.user_id)
329329
end
330330

331-
defpdomain_filter_query(CMS.Repo=queryable,filter)do
332-
Enum.reduce(filter,queryable,fn
333-
{:sort,:most_github_star},queryable->
334-
queryable|>order_by(desc::star_count)
335-
336-
{:sort,:most_github_fork},queryable->
337-
queryable|>order_by(desc::fork_count)
338-
339-
{:sort,:most_github_watch},queryable->
340-
queryable|>order_by(desc::watch_count)
341-
342-
{:sort,:most_github_pr},queryable->
343-
queryable|>order_by(desc::prs_count)
344-
345-
{:sort,:most_github_issue},queryable->
346-
queryable|>order_by(desc::issues_count)
347-
348-
{_,_},queryable->
349-
queryable
350-
end)
351-
end
352-
353-
defpdomain_filter_query(queryable,_filter),do:queryable
354-
355331
defpadd_pin_articles_ifneed(articles,querable,%{community:community}=filter)do
356332
thread=module_to_thread(querable)
357333

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,6 @@ defmodule GroupherServer.CMS.Delegate.CommunityCURD do
277277
|>join(:inner,[member],uinassoc(member,:user))
278278
|>select([member,c,u],u)
279279
|>QueryBuilder.filter_pack(filters)
280-
# |> QueryBuilder.load_inner_users(filters)
281280
|>ORM.paginater(~m(page size)a)
282281
|>done()
283282
end

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

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ defmodule GroupherServer.CMS.Helper.Loader do
88

99
aliasCMS.{
1010
Author,
11-
CommunityEditor,
12-
CommunitySubscriber,
1311
CommunityThread,
1412
PostComment,
1513
PostCommentLike,
@@ -33,14 +31,6 @@ defmodule GroupherServer.CMS.Helper.Loader do
3331
)
3432
end
3533

36-
defquery({"communities_subscribers",CommunitySubscriber},args)do
37-
CommunitySubscriber|>QueryBuilder.members_pack(args)
38-
end
39-
40-
defquery({"communities_editors",CommunityEditor},args)do
41-
CommunityEditor|>QueryBuilder.members_pack(args)
42-
end
43-
4434
# ------- post comments ------
4535
@doc"""
4636
get unique participators join in comments
@@ -85,7 +75,18 @@ defmodule GroupherServer.CMS.Helper.Loader do
8575

8676
defquery({"posts_comments_replies",PostCommentReply},%{filter:filter})do
8777
PostCommentReply
88-
|>QueryBuilder.load_inner_replies(filter)
78+
|>load_inner_replies(filter)
79+
end
80+
81+
@doc"""
82+
load replies of the given comment
83+
TODO: remove
84+
"""
85+
defpload_inner_replies(queryable,filter)do
86+
queryable
87+
|>QueryBuilder.filter_pack(filter)
88+
|>join(:inner,[c],rinassoc(c,:reply))
89+
|>select([c,r],r)
8990
end
9091

9192
defquery({"posts_comments_replies",PostCommentReply},%{reply_to:_})do
@@ -105,8 +106,12 @@ defmodule GroupherServer.CMS.Helper.Loader do
105106
end
106107

107108
defquery({"posts_comments_likes",PostCommentLike},%{filter:_filter}=args)do
108-
PostCommentLike
109-
|>QueryBuilder.members_pack(args)
109+
PostCommentLike|>members_pack(args)
110+
end
111+
112+
# TODO: remove it
113+
defmembers_pack(queryable,%{filter:filter})do
114+
queryable|>QueryBuilder.load_inner_users(filter)
110115
end
111116

112117
# def query({"articles_comments_upvotes", ArticleCommentUpvote}, %{

‎lib/helper/query_builder.ex‎

Lines changed: 33 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,21 @@
11
defmoduleHelper.QueryBuilderdo
2-
# alias GroupherServer.Repo
2+
@moduledoc"""
3+
handle common query pices across the project
4+
"""
5+
36
importEcto.Query,warn:false
7+
aliasGroupherServer.CMS
48

59
@doc"""
6-
handle [3] situation:
7-
8-
1. basic query with filter
9-
2. reaction_user's count
10-
3. is viewer reacted?
11-
12-
bewteen [THREAD] and [REACT]
13-
[THREAD]: cms thread, include: Post, Job, Repo ...
14-
[REACT]; upvotes, stars, watchs ...
10+
load inner user field
1511
"""
16-
defmembers_pack(queryable,%{filter:filter})do
17-
queryable|>load_inner_users(filter)
18-
end
19-
20-
defmembers_pack(queryable,%{viewer_did:_,cur_user:cur_user})do
21-
queryable|>where([f],f.user_id==^cur_user.id)
22-
end
23-
24-
defmembers_pack(queryable,%{count:_,type::post})do
25-
queryable
26-
|>group_by([f],f.post_id)
27-
|>select([f],count(f.id))
28-
end
29-
30-
defmembers_pack(queryable,%{count:_,type::job})do
31-
queryable
32-
|>group_by([f],f.job_id)
33-
|>select([f],count(f.id))
34-
end
35-
36-
defmembers_pack(queryable,%{count:_,type::repo})do
37-
queryable
38-
|>group_by([f],f.repo_id)
39-
|>select([f],count(f.id))
40-
end
41-
42-
defmembers_pack(queryable,%{count:_,type::community})do
43-
queryable
44-
|>group_by([f],f.community_id)
45-
|>select([f],count(f.id))
46-
end
47-
4812
defload_inner_users(queryable,filter)do
4913
queryable
5014
|>join(:inner,[f],uinassoc(f,:user))
5115
|>select([f,u],u)
5216
|>filter_pack(filter)
5317
end
5418

55-
@doc"""
56-
load replies of the given comment
57-
"""
58-
defload_inner_replies(queryable,filter)do
59-
queryable
60-
|>filter_pack(filter)
61-
|>join(:inner,[c],rinassoc(c,:reply))
62-
|>select([c,r],r)
63-
end
64-
6519
@doc"""
6620
inserted in latest x mounth
6721
"""
@@ -122,12 +76,9 @@ defmodule Helper.QueryBuilder do
12276
queryable|>order_by(asc::index)
12377

12478
{:sort,:most_views},queryable->
125-
# this will cause error in Dialyzer
126-
# queryable |> order_by(^sort_strategy(:most_views))
12779
queryable|>order_by(desc::views,desc::inserted_at)
12880

12981
{:sort,:least_views},queryable->
130-
# queryable |> order_by(^sort_strategy(:least_views))
13182
queryable|>order_by(asc::views,desc::inserted_at)
13283

13384
{:sort,:most_stars},queryable->
@@ -136,9 +87,6 @@ defmodule Helper.QueryBuilder do
13687
{:sort,:least_stars},queryable->
13788
queryable|>sort_by_count(:stars,:asc)
13889

139-
{:sort,:most_likes},queryable->
140-
queryable|>sort_by_count(:likes,:desc)
141-
14290
{:length,:most_words},queryable->
14391
queryable|>order_by(desc::length)
14492

@@ -217,25 +165,41 @@ defmodule Helper.QueryBuilder do
217165
where:t.raw==^community_raw
218166
)
219167

220-
{:one_community,community_raw},queryable->
221-
from(
222-
qinqueryable,
223-
join:tinassoc(q,:community),
224-
where:t.raw==^community_raw
225-
)
226-
227168
{:first,first},queryable->
228169
queryable|>limit(^first)
229170

230-
# {:pin, bool}, queryable ->
231-
# queryable
232-
# |> where([p], p.pin == ^bool)
233-
234171
{:mark_delete,bool},queryable->
235172
queryable|>where([p],p.mark_delete==^bool)
236173

237174
{_,_},queryable->
238175
queryable
239176
end)
240177
end
178+
179+
@doc"""
180+
handle spec needs for CMS query filter
181+
"""
182+
defdomain_query(CMS.Repo=queryable,filter)do
183+
Enum.reduce(filter,queryable,fn
184+
{:sort,:most_github_star},queryable->
185+
queryable|>order_by(desc::star_count)
186+
187+
{:sort,:most_github_fork},queryable->
188+
queryable|>order_by(desc::fork_count)
189+
190+
{:sort,:most_github_watch},queryable->
191+
queryable|>order_by(desc::watch_count)
192+
193+
{:sort,:most_github_pr},queryable->
194+
queryable|>order_by(desc::prs_count)
195+
196+
{:sort,:most_github_issue},queryable->
197+
queryable|>order_by(desc::issues_count)
198+
199+
{_,_},queryable->
200+
queryable
201+
end)
202+
end
203+
204+
defdomain_query(queryable,_filter),do:queryable
241205
end

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp