@@ -3,27 +3,20 @@ defmodule GroupherServer.Accounts.Delegate.Publish do
3
3
user followers / following related
4
4
"""
5
5
import Ecto.Query , warn: false
6
- import Helper.Utils , only: [ done: 1 , ensure: 2 ]
7
- # import Helper.ErrorCode
8
- import ShortMaps
6
+ import Helper.Utils , only: [ ensure: 2 ]
9
7
10
- import GroupherServer.CMS.Helper.Matcher
8
+ alias GroupherServer . { Accounts , CMS }
9
+ alias Accounts.Model . { Embeds , User }
11
10
12
- alias GroupherServer.Accounts.Model . { Embeds , User }
13
- alias GroupherServer.CMS.Model.Comment
14
-
15
- alias Helper . { ORM , QueryBuilder }
11
+ alias Helper.ORM
16
12
17
13
@ default_meta Embeds.UserMeta . default_meta ( )
18
14
19
15
@ doc """
20
16
get paged published contets of a user
21
17
"""
22
18
def paged_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 )
27
20
end
28
21
29
22
@ doc """
@@ -32,60 +25,21 @@ defmodule GroupherServer.Accounts.Delegate.Publish do
32
25
def update_published_states ( user_id , thread ) do
33
26
filter = % { page: 1 , size: 1 }
34
27
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 )
42
33
43
34
ORM . update_meta ( user , meta )
44
35
end
45
36
end
46
37
47
- defp do_paged_published_articles ( queryable , % User { } = user , % { page: page , size: size } = filter ) do
48
- queryable
49
- |> join ( :inner , [ article ] , author in assoc ( 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
+ def paged_published_comments ( user , filter ) do
39
+ CMS . paged_published_comments ( user , filter )
55
40
end
56
41
57
- def paged_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 ] , author in assoc ( 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
- def paged_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 ( comment in Comment , preload: ^ article_preload )
80
-
81
- query
82
- |> join ( :inner , [ comment ] , author in assoc ( 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
+ def paged_published_comments ( user , thread , filter ) do
43
+ CMS . paged_published_comments ( user , thread , filter )
90
44
end
91
45
end