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.

Commit0d48359

Browse files
committed
finish dislike feature
1 parent9179c5d commit0d48359

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

‎lib/mastani_server/cms/cms_loader.ex‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ defmodule MastaniServer.CMS.Loader do
1414
CommunityEditor,
1515
CommunityThread,
1616
PostCommentReply,
17-
PostCommentLike
17+
PostCommentLike,
18+
PostCommentDislike
1819
}
1920

2021
defdata(),do:Dataloader.Ecto.new(Repo,query:&query/2,run_batch:&run_batch/5)
@@ -115,6 +116,22 @@ defmodule MastaniServer.CMS.Loader do
115116
|>QueryBuilder.members_pack(args)
116117
end
117118

119+
defquery({"posts_comments_dislikes",PostCommentDislike},%{count:_})do
120+
PostCommentDislike
121+
|>group_by([f],f.post_comment_id)
122+
|>select([f],count(f.id))
123+
end
124+
125+
# component dislikes
126+
defquery({"posts_comments_dislikes",PostCommentDislike},%{viewer_did:_,cur_user:cur_user})do
127+
PostCommentDislike|>where([f],f.user_id==^cur_user.id)
128+
end
129+
130+
defquery({"posts_comments_dislikes",PostCommentDislike},%{filter:_filter}=args)do
131+
PostCommentDislike
132+
|>QueryBuilder.members_pack(args)
133+
end
134+
118135
# default loader
119136
defquery(queryable,_args)do
120137
# IO.inspect(queryable, label: "default loader")

‎lib/mastani_server_web/schema/cms/cms_types.ex‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,20 @@ defmodule MastaniServerWeb.Schema.CMS.Types do
4949
middleware(M.ViewerDidConvert)
5050
end
5151

52+
field:dislikes,list_of(:user)do
53+
arg(:filter,:members_filter)
54+
55+
middleware(M.PageSizeProof)
56+
resolve(dataloader(CMS,:dislikes))
57+
end
58+
59+
field:dislikes_count,:integerdo
60+
arg(:count,:count_type,default_value::count)
61+
62+
resolve(dataloader(CMS,:dislikes))
63+
middleware(M.ConvertToInt)
64+
end
65+
5266
field:replies,list_of(:comment)do
5367
arg(:filter,:members_filter)
5468

‎test/mastani_server_web/query/post_comment_test.exs‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,47 @@ defmodule MastaniServer.Test.Query.PostCommentTest do
127127
assertfound["likes"]|>Enum.any?(&(&1["id"]==to_string(user.id)))
128128
end
129129

130+
@query"""
131+
query comments($id: ID!, $filter: PagedFilter!) {
132+
comments(id: $id, filter: $filter) {
133+
entries {
134+
id
135+
body
136+
author {
137+
id
138+
nickname
139+
}
140+
dislikesCount
141+
dislikes {
142+
id
143+
nickname
144+
}
145+
}
146+
}
147+
}
148+
"""
149+
test"guest user can get dislikes info",~m(guest_conn post user)ado
150+
body="test comment"
151+
152+
{:ok,comment}=
153+
CMS.create_comment(:post,:comment,post.id,%Accounts.User{id:user.id},body)
154+
155+
{:ok,_like}=CMS.dislike_comment(:post_comment,comment.id,%Accounts.User{id:user.id})
156+
157+
variables=%{id:post.id,filter:%{page:1,size:10}}
158+
results=guest_conn|>query_result(@query,variables,"comments")
159+
160+
found=
161+
results["entries"]|>Enum.filter(&(&1["id"]==to_string(comment.id)))|>List.first()
162+
163+
author=found|>Map.get("author")
164+
165+
assertauthor["id"]==to_string(user.id)
166+
assertfound["dislikesCount"]==1
167+
168+
assertfound["dislikes"]|>Enum.any?(&(&1["id"]==to_string(user.id)))
169+
end
170+
130171
@query"""
131172
query comments($id: ID!, $filter: PagedFilter!) {
132173
comments(id: $id, filter: $filter) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp