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.

chore(clean-up): unused query helper#382

Merged
mydearxym merged 7 commits intodevfromclean-up-query-helper
Jun 2, 2021
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 2 additions & 26 deletionslib/groupher_server/cms/delegates/article_curd.ex
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,7 +90,7 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do

with {:ok, info} <- match(thread) do
info.model
|>domain_filter_query(filter)
|>QueryBuilder.domain_query(filter)
|> QueryBuilder.filter_pack(Map.merge(filter, %{mark_delete: false}))
|> ORM.paginater(~m(page size)a)
|> add_pin_articles_ifneed(info.model, filter)
Expand All@@ -103,7 +103,7 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do

with {:ok, info} <- match(thread) do
info.model
|>domain_filter_query(filter)
|>QueryBuilder.domain_query(filter)
|> QueryBuilder.filter_pack(Map.merge(filter, %{mark_delete: false}))
|> ORM.paginater(~m(page size)a)
|> add_pin_articles_ifneed(info.model, filter)
Expand DownExpand Up@@ -328,30 +328,6 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
ORM.find_by(Author, user_id: changeset.data.user_id)
end

defp domain_filter_query(CMS.Repo = queryable, filter) do
Enum.reduce(filter, queryable, fn
{:sort, :most_github_star}, queryable ->
queryable |> order_by(desc: :star_count)

{:sort, :most_github_fork}, queryable ->
queryable |> order_by(desc: :fork_count)

{:sort, :most_github_watch}, queryable ->
queryable |> order_by(desc: :watch_count)

{:sort, :most_github_pr}, queryable ->
queryable |> order_by(desc: :prs_count)

{:sort, :most_github_issue}, queryable ->
queryable |> order_by(desc: :issues_count)

{_, _}, queryable ->
queryable
end)
end

defp domain_filter_query(queryable, _filter), do: queryable

defp add_pin_articles_ifneed(articles, querable, %{community: community} = filter) do
thread = module_to_thread(querable)

Expand Down
1 change: 0 additions & 1 deletionlib/groupher_server/cms/delegates/community_curd.ex
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -277,7 +277,6 @@ defmodule GroupherServer.CMS.Delegate.CommunityCURD do
|>join(:inner,[member],uinassoc(member,:user))
|>select([member,c,u],u)
|>QueryBuilder.filter_pack(filters)
# |> QueryBuilder.load_inner_users(filters)
|>ORM.paginater(~m(page size)a)
|>done()
end
Expand Down
31 changes: 18 additions & 13 deletionslib/groupher_server/cms/helper/loader.ex
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,8 +8,6 @@ defmodule GroupherServer.CMS.Helper.Loader do

aliasCMS.{
Author,
CommunityEditor,
CommunitySubscriber,
CommunityThread,
PostComment,
PostCommentLike,
Expand All@@ -33,14 +31,6 @@ defmodule GroupherServer.CMS.Helper.Loader do
)
end

defquery({"communities_subscribers",CommunitySubscriber},args)do
CommunitySubscriber|>QueryBuilder.members_pack(args)
end

defquery({"communities_editors",CommunityEditor},args)do
CommunityEditor|>QueryBuilder.members_pack(args)
end

# ------- post comments ------
@doc"""
get unique participators join in comments
Expand DownExpand Up@@ -85,7 +75,18 @@ defmodule GroupherServer.CMS.Helper.Loader do

defquery({"posts_comments_replies",PostCommentReply},%{filter:filter})do
PostCommentReply
|>QueryBuilder.load_inner_replies(filter)
|>load_inner_replies(filter)
end

@doc"""
load replies of the given comment
TODO: remove
"""
defpload_inner_replies(queryable,filter)do
queryable
|>QueryBuilder.filter_pack(filter)
|>join(:inner,[c],rinassoc(c,:reply))
|>select([c,r],r)
end

defquery({"posts_comments_replies",PostCommentReply},%{reply_to:_})do
Expand All@@ -105,8 +106,12 @@ defmodule GroupherServer.CMS.Helper.Loader do
end

defquery({"posts_comments_likes",PostCommentLike},%{filter:_filter}=args)do
PostCommentLike
|>QueryBuilder.members_pack(args)
PostCommentLike|>members_pack(args)
end

# TODO: remove it
defmembers_pack(queryable,%{filter:filter})do
queryable|>QueryBuilder.load_inner_users(filter)
end

# def query({"articles_comments_upvotes", ArticleCommentUpvote}, %{
Expand Down
102 changes: 33 additions & 69 deletionslib/helper/query_builder.ex
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,21 @@
defmoduleHelper.QueryBuilderdo
# alias GroupherServer.Repo
@moduledoc"""
handle common query pices across the project
"""

importEcto.Query,warn:false
aliasGroupherServer.CMS

@doc"""
handle [3] situation:
1. basic query with filter
2. reaction_user's count
3. is viewer reacted?
bewteen [THREAD] and [REACT]
[THREAD]: cms thread, include: Post, Job, Repo ...
[REACT]; upvotes, stars, watchs ...
load inner user field
"""
defmembers_pack(queryable,%{filter:filter})do
queryable|>load_inner_users(filter)
end

defmembers_pack(queryable,%{viewer_did:_,cur_user:cur_user})do
queryable|>where([f],f.user_id==^cur_user.id)
end

defmembers_pack(queryable,%{count:_,type::post})do
queryable
|>group_by([f],f.post_id)
|>select([f],count(f.id))
end

defmembers_pack(queryable,%{count:_,type::job})do
queryable
|>group_by([f],f.job_id)
|>select([f],count(f.id))
end

defmembers_pack(queryable,%{count:_,type::repo})do
queryable
|>group_by([f],f.repo_id)
|>select([f],count(f.id))
end

defmembers_pack(queryable,%{count:_,type::community})do
queryable
|>group_by([f],f.community_id)
|>select([f],count(f.id))
end

defload_inner_users(queryable,filter)do
queryable
|>join(:inner,[f],uinassoc(f,:user))
|>select([f,u],u)
|>filter_pack(filter)
end

@doc"""
load replies of the given comment
"""
defload_inner_replies(queryable,filter)do
queryable
|>filter_pack(filter)
|>join(:inner,[c],rinassoc(c,:reply))
|>select([c,r],r)
end

@doc"""
inserted in latest x mounth
"""
Expand DownExpand Up@@ -122,12 +76,9 @@ defmodule Helper.QueryBuilder do
queryable|>order_by(asc::index)

{:sort,:most_views},queryable->
# this will cause error in Dialyzer
# queryable |> order_by(^sort_strategy(:most_views))
queryable|>order_by(desc::views,desc::inserted_at)

{:sort,:least_views},queryable->
# queryable |> order_by(^sort_strategy(:least_views))
queryable|>order_by(asc::views,desc::inserted_at)

{:sort,:most_stars},queryable->
Expand All@@ -136,9 +87,6 @@ defmodule Helper.QueryBuilder do
{:sort,:least_stars},queryable->
queryable|>sort_by_count(:stars,:asc)

{:sort,:most_likes},queryable->
queryable|>sort_by_count(:likes,:desc)

{:length,:most_words},queryable->
queryable|>order_by(desc::length)

Expand DownExpand Up@@ -217,25 +165,41 @@ defmodule Helper.QueryBuilder do
where:t.raw==^community_raw
)

{:one_community,community_raw},queryable->
from(
qinqueryable,
join:tinassoc(q,:community),
where:t.raw==^community_raw
)

{:first,first},queryable->
queryable|>limit(^first)

# {:pin, bool}, queryable ->
# queryable
# |> where([p], p.pin == ^bool)

{:mark_delete,bool},queryable->
queryable|>where([p],p.mark_delete==^bool)

{_,_},queryable->
queryable
end)
end

@doc"""
handle spec needs for CMS query filter
"""
defdomain_query(CMS.Repo=queryable,filter)do
Enum.reduce(filter,queryable,fn
{:sort,:most_github_star},queryable->
queryable|>order_by(desc::star_count)

{:sort,:most_github_fork},queryable->
queryable|>order_by(desc::fork_count)

{:sort,:most_github_watch},queryable->
queryable|>order_by(desc::watch_count)

{:sort,:most_github_pr},queryable->
queryable|>order_by(desc::prs_count)

{:sort,:most_github_issue},queryable->
queryable|>order_by(desc::issues_count)

{_,_},queryable->
queryable
end)
end

defdomain_query(queryable,_filter),do:queryable
end

[8]ページ先頭

©2009-2025 Movatter.jp