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.

Commitabe5a30

Browse files
committed
refactor(user-reaction): mutaion of collect folder wip
1 parent1bde043 commitabe5a30

File tree

8 files changed

+167
-225
lines changed

8 files changed

+167
-225
lines changed

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

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
defmoduleGroupherServer.Accounts.Delegate.CollectFolderdo
22
@moduledoc"""
3-
userFavoriteCategory related
3+
usercollect folder related
44
"""
55
importEcto.Query,warn:false
66
importGroupherServer.CMS.Utils.Matcher2
@@ -139,13 +139,18 @@ defmodule GroupherServer.Accounts.Delegate.CollectFolder do
139139
|>Multi.run(:add_article_collect,fn_,_->
140140
CMS.collect_article_ifneed(thread,article_id,user)
141141
end)
142-
|>Multi.run(:set_article_collect_folder,fn_,%{add_article_collect:article_collect}->
143-
CMS.set_collect_folder(article_collect,folder)
144-
end)
145142
|>Multi.run(:add_to_collect_folder,fn_,%{add_article_collect:article_collect}->
146143
collects=[article_collect]++folder.collects
147144
update_folder_meta(thread,collects,folder)
148145
end)
146+
# order is important, otherwise the foler in article_collect is not the latest
147+
|>Multi.run(:set_article_collect_folder,fn_,
148+
%{
149+
add_article_collect:article_collect,
150+
add_to_collect_folder:folder
151+
}->
152+
CMS.set_collect_folder(article_collect,folder)
153+
end)
149154
|>Repo.transaction()
150155
|>upsert_collect_folder_result()
151156
end
@@ -164,14 +169,19 @@ defmodule GroupherServer.Accounts.Delegate.CollectFolder do
164169
|>Multi.run(:del_article_collect,fn_,_->
165170
CMS.undo_collect_article_ifneed(thread,article_id,user)
166171
end)
167-
|>Multi.run(:unset_article_collect_folder,fn_,%{del_article_collect:article_collect}->
168-
CMS.undo_set_collect_folder(article_collect,folder)
169-
end)
170172
|>Multi.run(:rm_from_collect_folder,fn_,%{del_article_collect:article_collect}->
171173
# 不能用 -- 语法,因为两个结构体的 meta 信息不同,摔。
172174
collects=Enum.reject(folder.collects,&(&1.id==article_collect.id))
173175
update_folder_meta(thread,collects,folder)
174176
end)
177+
# order is important, otherwise the foler in article_collect is not the latest
178+
|>Multi.run(:unset_article_collect_folder,fn_,
179+
%{
180+
del_article_collect:article_collect,
181+
rm_from_collect_folder:folder
182+
}->
183+
CMS.undo_set_collect_folder(article_collect,folder)
184+
end)
175185
|>Repo.transaction()
176186
|>upsert_collect_folder_result()
177187
end

‎lib/groupher_server_web/resolvers/accounts_resolver.ex‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,15 @@ defmodule GroupherServerWeb.Resolvers.Accounts do
119119
Accounts.delete_collect_folder(id)
120120
end
121121

122-
#defset_favorites(_root, ~m(idthreadcategory_id)a, %{context: %{cur_user: cur_user}}) do
123-
#Accounts.set_favorites(cur_user, thread, id, category_id)
124-
#end
122+
defadd_to_collect(_root,~m(threadarticle_id folder_id)a,%{context:%{cur_user:cur_user}})do
123+
Accounts.add_to_collect(thread,article_id,folder_id,cur_user)
124+
end
125125

126-
# def unset_favorites(_root, ~m(id thread category_id)a, %{context: %{cur_user: cur_user}}) do
127-
# Accounts.unset_favorites(cur_user, thread, id, category_id)
128-
# end
126+
defremove_from_collect(_root,~m(thread article_id folder_id)a,%{
127+
context:%{cur_user:cur_user}
128+
})do
129+
Accounts.remove_from_collect(thread,article_id,folder_id,cur_user)
130+
end
129131

130132
defpaged_collect_folders(_root,~m(user_login filter)a,%{context:%{cur_user:cur_user}})do
131133
with{:ok,user_id}<-Accounts.get_userid_and_cache(user_login)do

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,32 +60,32 @@ defmodule GroupherServerWeb.Schema.Account.Mutations do
6060
resolve(&R.Accounts.update_collect_folder/3)
6161
end
6262

63-
@desc"delete afavorites category"
64-
field:delete_favorite_category,:donedo
63+
@desc"delete acollect folder"
64+
field:delete_collect_folder,:collect_folderdo
6565
arg(:id,non_null(:id))
6666

6767
middleware(M.Authorize,:login)
68-
resolve(&R.Accounts.delete_favorite_category/3)
68+
resolve(&R.Accounts.delete_collect_folder/3)
6969
end
7070

71-
@desc"put content to favorites with category"
72-
field:set_favorites,:favorites_categorydo
73-
arg(:id,non_null(:id))
74-
arg(:category_id,non_null(:id))
71+
@desc"add article into a collect folder"
72+
field:add_to_collect,:collect_folderdo
73+
arg(:article_id,non_null(:id))
74+
arg(:folder_id,non_null(:id))
7575
arg(:thread,:cms_thread,default_value::post)
7676

7777
middleware(M.Authorize,:login)
78-
resolve(&R.Accounts.set_favorites/3)
78+
resolve(&R.Accounts.add_to_collect/3)
7979
end
8080

81-
@desc"take out contentfromfavorites category"
82-
field:unset_favorites,:favorites_categorydo
83-
arg(:id,non_null(:id))
84-
arg(:category_id,non_null(:id))
81+
@desc"remove articlefroma collect folder"
82+
field:remove_from_collect,:collect_folderdo
83+
arg(:article_id,non_null(:id))
84+
arg(:folder_id,non_null(:id))
8585
arg(:thread,:cms_thread,default_value::post)
8686

8787
middleware(M.Authorize,:login)
88-
resolve(&R.Accounts.unset_favorites/3)
88+
resolve(&R.Accounts.remove_from_collect/3)
8989
end
9090

9191
@desc"set user's customization"

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,10 @@ defmodule GroupherServerWeb.Schema.Account.Types do
222222
pagination_fields()
223223
end
224224

225+
object:collect_folder_metado
226+
collect_folder_meta_fields()
227+
end
228+
225229
object:collect_folderdo
226230
field(:id,:id)
227231
field(:title,:string)
@@ -232,6 +236,7 @@ defmodule GroupherServerWeb.Schema.Account.Types do
232236
field(:last_updated,:datetime)
233237
field(:inserted_at,:datetime)
234238
field(:updated_at,:datetime)
239+
field(:meta,:collect_folder_meta)
235240
end
236241

237242
object:paged_collect_foldersdo

‎lib/groupher_server_web/schema/utils/helper.ex‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ defmodule GroupherServerWeb.Schema.Utils.Helper do
44
"""
55
importHelper.Utils,only:[get_config:2]
66

7-
aliasGroupherServer.CMS
7+
aliasGroupherServer.{Accounts,CMS}
88
aliasCMS.{ArticleComment}
99

1010
@page_sizeget_config(:general,:page_size)
1111
@supported_emotionsArticleComment.supported_emotions()
12+
@supported_collect_folder_threadsAccounts.CollectFolder.supported_threads()
1213

1314
defmacrotimestamp_fieldsdo
1415
quotedo
@@ -271,8 +272,10 @@ defmodule GroupherServerWeb.Schema.Utils.Helper do
271272
end
272273
end
273274

274-
# general emotions for comments
275-
# NOTE: xxx_user_logins field is not support for gq-endpoint
275+
@doc"""
276+
general emotions for comments
277+
#NOTE: xxx_user_logins field is not support for gq-endpoint
278+
"""
276279
defmacroemotion_fields()do
277280
@supported_emotions
278281
|>Enum.map(fnemotion->
@@ -283,4 +286,17 @@ defmodule GroupherServerWeb.Schema.Utils.Helper do
283286
end
284287
end)
285288
end
289+
290+
@doc"""
291+
general collect folder meta info
292+
"""
293+
defmacrocollect_folder_meta_fields()do
294+
@supported_collect_folder_threads
295+
|>Enum.map(fnthread->
296+
quotedo
297+
field(unquote(:"has_#{thread}"),:boolean)
298+
field(unquote(:"#{thread}_count"),:integer)
299+
end
300+
end)
301+
end
286302
end

‎test/groupher_server/accounts/collect_folder_test.exs‎

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
77
aliasGroupherServer.{Accounts,CMS}
88

99
aliasAccounts.{Embeds}
10-
aliasAccounts.FavoriteCategory
1110

1211
@default_metaEmbeds.CollectFolderMeta.default_meta()
1312

@@ -126,22 +125,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
126125
{:ok,updated}=Accounts.update_collect_folder(folder.id,%{private:true})
127126
assertupdated.private==true
128127
end
129-
130-
test"user can delete a favorite category",~m(user post post2)ado
131-
test_category="test category"
132-
{:ok,category}=Accounts.create_favorite_category(user,%{title:test_category})
133-
134-
{:ok,_post_favorite}=Accounts.set_favorites(user,:post,post.id,category.id)
135-
{:ok,_post_favorite}=Accounts.set_favorites(user,:post,post2.id,category.id)
136-
137-
assert{:ok,_}=Accounts.delete_favorite_category(user,category.id)
138-
139-
assert{:error,_}=
140-
CMS.PostFavorite
141-
|>ORM.find_by(%{category_id:category.id,user_id:user.id})
142-
143-
assert{:error,_}=FavoriteCategory|>ORM.find(category.id)
144-
end
145128
end
146129

147130
describe"[add/remove from collect]"do

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp