Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit 0518832

Browse files
committed
refactor(viewer-solution): wip
1 parent 071eca3 commit 0518832

File tree

2 files changed

+31
-50
lines changed

2 files changed

+31
-50
lines changed

lib/groupher_server_web/schema/cms/cms_queries.ex

Lines changed: 5 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ defmodule GroupherServerWeb.Schema.CMS.Queries do
22
@moduledoc """
33
CMS queries
44
"""
5+
import GroupherServerWeb.Schema.Utils.Helper
6+
57
use Helper.GqlSchemaSuite
68

79
object :cms_queries do
@@ -65,56 +67,9 @@ defmodule GroupherServerWeb.Schema.CMS.Queries do
6567
resolve(&R.CMS.paged_threads/3)
6668
end
6769

68-
@desc "get post by id"
69-
field :post, non_null(:post) do
70-
arg(:id, non_null(:id))
71-
arg(:thread, :post_thread, default_value: :post)
72-
73-
resolve(&R.CMS.read_article/3)
74-
end
75-
76-
@desc "get paged posts"
77-
field :paged_posts, :paged_posts do
78-
arg(:thread, :post_thread, default_value: :post)
79-
arg(:filter, non_null(:paged_posts_filter))
80-
81-
middleware(M.PageSizeProof)
82-
resolve(&R.CMS.paged_articles/3)
83-
end
84-
85-
@desc "get job by id"
86-
field :job, non_null(:job) do
87-
arg(:id, non_null(:id))
88-
arg(:thread, :job_thread, default_value: :job)
89-
90-
resolve(&R.CMS.read_article/3)
91-
end
92-
93-
@desc "get paged jobs"
94-
field :paged_jobs, :paged_jobs do
95-
arg(:thread, :job_thread, default_value: :job)
96-
arg(:filter, non_null(:paged_jobs_filter))
97-
98-
middleware(M.PageSizeProof)
99-
resolve(&R.CMS.paged_articles/3)
100-
end
101-
102-
@desc "get repo by id"
103-
field :repo, non_null(:repo) do
104-
arg(:id, non_null(:id))
105-
arg(:thread, :repo_thread, default_value: :repo)
106-
107-
resolve(&R.CMS.read_article/3)
108-
end
109-
110-
@desc "get paged repos"
111-
field :paged_repos, :paged_repos do
112-
arg(:thread, :repo_thread, default_value: :repo)
113-
arg(:filter, non_null(:paged_repos_filter))
114-
115-
middleware(M.PageSizeProof)
116-
resolve(&R.CMS.paged_articles/3)
117-
end
70+
article_queries(:post)
71+
article_queries(:job)
72+
article_queries(:repo)
11873

11974
@desc "get wiki by community raw name"
12075
field :wiki, non_null(:wiki) do

lib/groupher_server_web/schema/utils/helper.ex

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,32 @@ defmodule GroupherServerWeb.Schema.Utils.Helper do
9797
end
9898
end
9999

100+
@doc """
101+
query generator for threads, like:
102+
103+
post, page_posts ...
104+
"""
105+
defmacro article_queries(thread) do
106+
quote do
107+
@desc unquote("get #{thread} by id")
108+
field unquote(thread), non_null(unquote(thread)) do
109+
arg(:id, non_null(:id))
110+
arg(:thread, unquote(:"#{thread}_thread"), default_value: unquote(thread))
111+
112+
resolve(&R.CMS.read_article/3)
113+
end
114+
115+
@desc unquote("get paged #{thread}s")
116+
field unquote(:"paged_#{thread}s"), unquote(:"paged_#{thread}s") do
117+
arg(:thread, unquote(:"#{thread}_thread"), default_value: unquote(thread))
118+
arg(:filter, non_null(unquote(:"paged_#{thread}s_filter")))
119+
120+
middleware(M.PageSizeProof)
121+
resolve(&R.CMS.paged_articles/3)
122+
end
123+
end
124+
end
125+
100126
defmacro comments_fields do
101127
quote do
102128
field(:id, :id)

0 commit comments

Comments
 (0)