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.

Commit7b0deec

Browse files
committed
chore(blog_rss): naming & error handling
1 parent73e65cc commit7b0deec

File tree

8 files changed

+125
-30
lines changed

8 files changed

+125
-30
lines changed

‎lib/groupher_server/cms/cms.ex‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ defmodule GroupherServer.CMS do
106106
defdelegatecreate_blog(community,attrs,user),to:BlogCURD
107107
defdelegatecreate_blog_rss(attrs),to:BlogCURD
108108
defdelegateupdate_blog_rss(attrs),to:BlogCURD
109-
defdelegateblog_rss_feed(rss),to:BlogCURD
109+
defdelegateblog_rss_info(rss),to:BlogCURD
110110

111111
defdelegatepaged_citing_contents(type,id,filter),to:CitedArtiment
112112

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

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ defmodule GroupherServer.CMS.Delegate.BlogCURD do
33
CURD operation on post/job ...
44
"""
55
importEcto.Query,warn:false
6-
importHelper.Utils,only:[strip_struct:1]
6+
importHelper.Utils,only:[strip_struct:1,done:1]
7+
importHelper.ErrorCode
78

89
importGroupherServer.CMS.Delegate.ArticleCURD,only:[create_article:4]
910
# import Helper.Utils, only: [done: 1]
@@ -21,11 +22,11 @@ defmodule GroupherServer.CMS.Delegate.BlogCURD do
2122
@cache_pool:blog_rss
2223

2324
# alias Ecto.Multi
24-
defblog_rss_feed(rss)whenis_binary(rss)do
25+
defblog_rss_info(rss)whenis_binary(rss)do
2526
with{:ok,feed}<-ORM.find_by(BlogRSS,%{rss:rss})do
2627
{:ok,feed}
2728
else
28-
_->fetch_fresh_feed_and_cache(rss)
29+
_->fetch_fresh_rssinfo_and_cache(rss)
2930
end
3031
end
3132

@@ -35,7 +36,7 @@ defmodule GroupherServer.CMS.Delegate.BlogCURD do
3536
# 1. 先判断 rss 是否存在
3637
## 1.1 如果存在,从 cache 中获取
3738
## 1.2 如不存在,则创建一条 RSS
38-
with{:ok,feed}<-blog_rss_feed(attrs.rss)do
39+
with{:ok,feed}<-blog_rss_info(attrs.rss)do
3940
do_create_blog(community,attrs,user,feed)
4041

4142
# IO.inspect(feed, label: "create blog")
@@ -71,7 +72,7 @@ defmodule GroupherServer.CMS.Delegate.BlogCURD do
7172

7273
# rss 记录不存在, 先创建 rss, 再创建 blog
7374
defpdo_create_blog(%Community{}=community,attrs,%User{}=user,feed)do
74-
with{:ok,feed}<-CMS.blog_rss_feed(attrs.rss),
75+
with{:ok,feed}<-CMS.blog_rss_info(attrs.rss),
7576
{:ok,feed}<-create_blog_rss(feed)do
7677
do_create_blog(community,attrs,user,feed)
7778
end
@@ -117,18 +118,20 @@ defmodule GroupherServer.CMS.Delegate.BlogCURD do
117118
@doc"""
118119
get and cache feed by rss address as key
119120
"""
120-
deffetch_fresh_feed_and_cache(rss)do
121+
deffetch_fresh_rssinfo_and_cache(rss)do
121122
caseCache.get(@cache_pool,rss)do
122-
{:ok,feed}->{:ok,feed}
123-
{:error,_}->get_feed_and_cache(rss)
123+
{:ok,rssinfo}->{:ok,rssinfo}
124+
{:error,_}->get_rssinfo_and_cache(rss)
124125
end
125126
end
126127

127-
defpget_feed_and_cache(rss)do
128+
defpget_rssinfo_and_cache(rss)do
128129
# {:ok, feed} = RSS.get(rss)
129-
with{:ok,feed}=RSS.get(rss)do
130-
Cache.put(@cache_pool,rss,feed)
131-
{:ok,feed}
130+
with{:ok,rssinfo}<-RSS.get(rss)do
131+
Cache.put(@cache_pool,rss,rssinfo)
132+
{:ok,rssinfo}
133+
else
134+
{:error,_}->{:error,[message:"blog rss is invalid",code:ecode(:invalid_blog_rss)]}
132135
end
133136
end
134137
end

‎lib/groupher_server_web/resolvers/cms_resolver.ex‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ defmodule GroupherServerWeb.Resolvers.CMS do
6262
CMS.paged_reports(filter)
6363
end
6464

65+
# TODO: login only
66+
defblog_rss_info(_root,~m(rss)a,_)do
67+
CMS.blog_rss_info(rss)
68+
end
69+
6570
defwiki(_root,~m(community)a,_info),do:CMS.get_wiki(%Community{raw:community})
6671
defcheatsheet(_root,~m(community)a,_info),do:CMS.get_cheatsheet(%Community{raw:community})
6772

‎lib/groupher_server_web/schema/cms/cms_queries.ex‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,13 @@ defmodule GroupherServerWeb.Schema.CMS.Queries do
140140
resolve(&R.CMS.search_communities/3)
141141
end
142142

143+
@desc"get rss info based on blog rss address"
144+
field:blog_rss_info,:blog_rssdo
145+
arg(:rss,non_null(:string))
146+
147+
resolve(&R.CMS.blog_rss_info/3)
148+
end
149+
143150
article_search_queries()
144151

145152
article_reacted_users_query(:upvot,&R.CMS.upvoted_users/3)

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,32 @@ defmodule GroupherServerWeb.Schema.CMS.Types do
347347
timestamp_fields()
348348
end
349349

350+
object:blog_feeddo
351+
field(:title,:string)
352+
field(:digest,:string)
353+
field(:link_addr,:string)
354+
field(:content,:string)
355+
field(:published,:string)
356+
field(:updated,:string)
357+
end
358+
359+
object:blog_authordo
360+
field(:name,:string)
361+
field(:intro,:string)
362+
field(:github,:string)
363+
field(:twitter,:string)
364+
end
365+
366+
object:blog_rssdo
367+
field(:rss,:string)
368+
field(:title,:string)
369+
field(:subtitle,:string)
370+
field(:link,:string)
371+
field(:updated,:string)
372+
field(:author,:blog_author)
373+
field(:history_feed,list_of(:blog_feed))
374+
end
375+
350376
paged_article_objects()
351377

352378
object:paged_reportsdo

‎lib/helper/error_code.ex‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ defmodule Helper.ErrorCode do
5353
defecode(:require_questioner),do:@article_base+9
5454
defecode(:cite_artilce),do:@article_base+10
5555
defecode(:archived),do:@article_base+11
56+
defecode(:invalid_blog_rss),do:@article_base+12
5657
# def ecode(:already_solved), do: @article_base + 10
5758

5859
defecode,do:@default_base
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
defmoduleGroupherServer.Test.Query.CMS.BlogRSSdo
2+
useGroupherServer.TestTools
3+
4+
@rssmock_rss_addr()
5+
6+
setupdo
7+
guest_conn=simu_conn(:guest)
8+
user_conn=simu_conn(:user)
9+
10+
{:ok,~m(user_conn guest_conn)a}
11+
end
12+
13+
@query"""
14+
query($rss: String!) {
15+
blogRssInfo(rss: $rss) {
16+
title
17+
subtitle
18+
link
19+
updated
20+
author {
21+
name
22+
intro
23+
github
24+
twitter
25+
}
26+
historyFeed {
27+
title
28+
digest
29+
linkAddr
30+
content
31+
published
32+
updated
33+
}
34+
}
35+
}
36+
"""
37+
# @tag :wip2
38+
test"basic graphql query blog rss info",~m(user_conn)ado
39+
variables=%{rss:@rss}
40+
results=user_conn|>query_result(@query,variables,"blogRssInfo")
41+
42+
assertnotis_nil(results["title"])
43+
end
44+
45+
@tag:wip
46+
test"invalid rss will get error",~m(user_conn)ado
47+
variables=%{rss:"invalid rss address"}
48+
# results = user_conn |> query_result(@query, variables, "blogRssInfo")
49+
assertuser_conn|>query_get_error?(@query,variables,ecode(:invalid_blog_rss))
50+
# IO.inspect(results, label: "iiii")
51+
end
52+
end

‎test/helper/rss_test.exs‎

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ defmodule GroupherServer.Test.Helper.RSSTest do
1111
setupdo
1212
{:ok,community}=db_insert(:community)
1313
{:ok,user}=db_insert(:user)
14-
blog_attrs=mock_attrs(:blog,%{community_id:community.id})
1514

16-
{:ok,~m(community user blog_attrs)a}
15+
{:ok,~m(community user)a}
1716
end
1817

1918
describe"blog curd"do
20-
@tag:wip
21-
test"can create blog",~m(community user blog_attrs)ado
22-
{:ok,feed}=CMS.blog_rss_feed(@rss)
19+
@tag:wip2
20+
test"can create blog",~m(community user)ado
21+
{:ok,feed}=CMS.blog_rss_info(@rss)
2322
{:ok,_rss_record}=CMS.create_blog_rss(feed)
2423

2524
selected_feed=feed.history_feed|>List.first()
@@ -37,9 +36,9 @@ defmodule GroupherServer.Test.Helper.RSSTest do
3736
assertblog.link_addr==link_addr
3837
end
3938

40-
@tag:wip
41-
test"can create blog with no-exsit rss record",~m(community user blog_attrs)ado
42-
{:ok,feed}=CMS.blog_rss_feed(@rss)
39+
@tag:wip2
40+
test"can create blog with no-exsit rss record",~m(community user)ado
41+
{:ok,feed}=CMS.blog_rss_info(@rss)
4342

4443
selected_feed=feed.history_feed|>List.first()
4544
title=selected_feed|>Map.get(:title)
@@ -56,12 +55,13 @@ defmodule GroupherServer.Test.Helper.RSSTest do
5655
assertblog.link_addr==link_addr
5756
end
5857

59-
@tag:wip
60-
test"can create blog with blog_author",~m(community user blog_attrs)ado
61-
{:ok,feed}=CMS.blog_rss_feed(@rss)
58+
@tag:wip2
59+
test"can create blog with blog_author",~m(community user)ado
60+
{:ok,feed}=CMS.blog_rss_info(@rss)
6261

6362
author=%{
6463
name:"mydearxym",
64+
intro:"this is mydearxym",
6565
link:"https://coderplaents.com"
6666
}
6767

@@ -86,14 +86,15 @@ defmodule GroupherServer.Test.Helper.RSSTest do
8686
assertblog.title==title
8787
assertblog.link_addr==link_addr
8888
assertblog.blog_author.name==author.name
89+
assertblog.blog_author.intro==author.intro
8990
assertblog.blog_author.link==author.link
9091
end
9192
end
9293

9394
describe"fetch rss & curd"do
94-
@tag:wip
95+
@tag:wip2
9596
test"parse and create basic rss"do
96-
{:ok,feed}=CMS.blog_rss_feed(@rss)
97+
{:ok,feed}=CMS.blog_rss_info(@rss)
9798
feed=feed|>Map.merge(%{rss:@rss})
9899

99100
{:ok,rss_record}=CMS.create_blog_rss(feed)
@@ -103,9 +104,9 @@ defmodule GroupherServer.Test.Helper.RSSTest do
103104
assertnotis_nil(cache)
104105
end
105106

106-
@tag:wip
107+
@tag:wip2
107108
test"create rss with author"do
108-
{:ok,feed}=CMS.blog_rss_feed(@rss)
109+
{:ok,feed}=CMS.blog_rss_info(@rss)
109110

110111
author=%{
111112
name:"mydearxym",
@@ -121,9 +122,9 @@ defmodule GroupherServer.Test.Helper.RSSTest do
121122
assertrss_record.author.name=="mydearxym"
122123
end
123124

124-
@tag:wip
125+
@tag:wip2
125126
test"update rss with author and exsit feed"do
126-
{:ok,feed}=CMS.blog_rss_feed(@rss)
127+
{:ok,feed}=CMS.blog_rss_info(@rss)
127128
{:ok,rss_record}=CMS.create_blog_rss(feed)
128129

129130
author=%{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp