From d97d328a9316005f5a821a11e09b86759d84ae6f Mon Sep 17 00:00:00 2001 From: mydearxym Date: Thu, 24 Jun 2021 22:41:01 +0800 Subject: [PATCH 1/3] refactor(renaming): publishd_article_comments -> published_comments --- lib/groupher_server/accounts/accounts.ex | 4 ++-- lib/groupher_server/accounts/delegates/publish.ex | 8 ++------ lib/groupher_server_web/resolvers/accounts_resolver.ex | 8 ++++---- lib/groupher_server_web/schema/account/account_queries.ex | 4 ++-- .../accounts/published/published_blogs_test.exs | 2 +- .../accounts/published/published_jobs_test.exs | 2 +- .../accounts/published/published_posts_test.exs | 2 +- .../accounts/published/published_repos_test.exs | 2 +- .../query/accounts/published/published_blogs_test.exs | 4 ++-- .../query/accounts/published/published_jobs_test.exs | 4 ++-- .../query/accounts/published/published_posts_test.exs | 4 ++-- .../query/accounts/published/published_repos_test.exs | 4 ++-- 12 files changed, 22 insertions(+), 26 deletions(-) diff --git a/lib/groupher_server/accounts/accounts.ex b/lib/groupher_server/accounts/accounts.ex index 8844a7502..d1615cf12 100644 --- a/lib/groupher_server/accounts/accounts.ex +++ b/lib/groupher_server/accounts/accounts.ex @@ -47,8 +47,8 @@ defmodule GroupherServer.Accounts do # publish defdelegate paged_published_articles(user, thread, filter), to: Publish - defdelegate paged_published_article_comments(user, thread, filter), to: Publish - defdelegate paged_published_article_comments(user, thread), to: Publish + defdelegate paged_published_comments(user, thread, filter), to: Publish + defdelegate paged_published_comments(user, thread), to: Publish defdelegate update_published_states(user, thread), to: Publish # fans diff --git a/lib/groupher_server/accounts/delegates/publish.ex b/lib/groupher_server/accounts/delegates/publish.ex index b7c924f4a..fac561326 100644 --- a/lib/groupher_server/accounts/delegates/publish.ex +++ b/lib/groupher_server/accounts/delegates/publish.ex @@ -54,7 +54,7 @@ defmodule GroupherServer.Accounts.Delegate.Publish do |> done() end - def paged_published_article_comments(%User{id: user_id}, %{page: page, size: size} = filter) do + def paged_published_comments(%User{id: user_id}, %{page: page, size: size} = filter) do with {:ok, user} <- ORM.find(User, user_id) do Comment |> join(:inner, [comment], author in assoc(comment, :author)) @@ -66,11 +66,7 @@ defmodule GroupherServer.Accounts.Delegate.Publish do end end - def paged_published_article_comments( - %User{id: user_id}, - thread, - %{page: page, size: size} = filter - ) do + def paged_published_comments(%User{id: user_id}, thread, %{page: page, size: size} = filter) do with {:ok, user} <- ORM.find(User, user_id) do thread = thread |> to_string |> String.upcase() thread_atom = thread |> String.downcase() |> String.to_atom() diff --git a/lib/groupher_server_web/resolvers/accounts_resolver.ex b/lib/groupher_server_web/resolvers/accounts_resolver.ex index e924144c4..a7945860c 100644 --- a/lib/groupher_server_web/resolvers/accounts_resolver.ex +++ b/lib/groupher_server_web/resolvers/accounts_resolver.ex @@ -191,17 +191,17 @@ defmodule GroupherServerWeb.Resolvers.Accounts do Accounts.paged_published_articles(cur_user, thread, filter) end - def paged_published_article_comments(_root, ~m(login filter thread)a, _info) do + def paged_published_comments(_root, ~m(login filter thread)a, _info) do with {:ok, user_id} <- Accounts.get_userid_and_cache(login) do - Accounts.paged_published_article_comments(%User{id: user_id}, thread, filter) + Accounts.paged_published_comments(%User{id: user_id}, thread, filter) else _ -> raise_error(:not_exsit, "#{login} not found") end end - def paged_published_article_comments(_root, ~m(login filter)a, _info) do + def paged_published_comments(_root, ~m(login filter)a, _info) do with {:ok, user_id} <- Accounts.get_userid_and_cache(login) do - Accounts.paged_published_article_comments(%User{id: user_id}, filter) + Accounts.paged_published_comments(%User{id: user_id}, filter) else _ -> raise_error(:not_exsit, "#{login} not found") end diff --git a/lib/groupher_server_web/schema/account/account_queries.ex b/lib/groupher_server_web/schema/account/account_queries.ex index abf429943..6e9232015 100644 --- a/lib/groupher_server_web/schema/account/account_queries.ex +++ b/lib/groupher_server_web/schema/account/account_queries.ex @@ -121,13 +121,13 @@ defmodule GroupherServerWeb.Schema.Account.Queries do end @desc "get paged published article comments" - field :paged_published_article_comments, :paged_comments do + field :paged_published_comments, :paged_comments do arg(:login, non_null(:string)) arg(:filter, non_null(:paged_filter)) arg(:thread, :thread, default_value: :post) middleware(M.PageSizeProof) - resolve(&R.Accounts.paged_published_article_comments/3) + resolve(&R.Accounts.paged_published_comments/3) end published_article_queries() diff --git a/test/groupher_server/accounts/published/published_blogs_test.exs b/test/groupher_server/accounts/published/published_blogs_test.exs index e249a4709..8e10606a4 100644 --- a/test/groupher_server/accounts/published/published_blogs_test.exs +++ b/test/groupher_server/accounts/published/published_blogs_test.exs @@ -81,7 +81,7 @@ defmodule GroupherServer.Test.Accounts.Published.Blog do end) filter = %{page: 1, size: 20} - {:ok, articles} = Accounts.paged_published_article_comments(user, :blog, filter) + {:ok, articles} = Accounts.paged_published_comments(user, :blog, filter) entries = articles.entries article = entries |> List.first() diff --git a/test/groupher_server/accounts/published/published_jobs_test.exs b/test/groupher_server/accounts/published/published_jobs_test.exs index 1081b1941..3d5034cb7 100644 --- a/test/groupher_server/accounts/published/published_jobs_test.exs +++ b/test/groupher_server/accounts/published/published_jobs_test.exs @@ -81,7 +81,7 @@ defmodule GroupherServer.Test.Accounts.Published.Job do end) filter = %{page: 1, size: 20} - {:ok, articles} = Accounts.paged_published_article_comments(user, :job, filter) + {:ok, articles} = Accounts.paged_published_comments(user, :job, filter) entries = articles.entries article = entries |> List.first() diff --git a/test/groupher_server/accounts/published/published_posts_test.exs b/test/groupher_server/accounts/published/published_posts_test.exs index 7575d0c34..c56dd7271 100644 --- a/test/groupher_server/accounts/published/published_posts_test.exs +++ b/test/groupher_server/accounts/published/published_posts_test.exs @@ -81,7 +81,7 @@ defmodule GroupherServer.Test.Accounts.Published.Post do end) filter = %{page: 1, size: 20} - {:ok, articles} = Accounts.paged_published_article_comments(user, :post, filter) + {:ok, articles} = Accounts.paged_published_comments(user, :post, filter) entries = articles.entries article = entries |> List.first() diff --git a/test/groupher_server/accounts/published/published_repos_test.exs b/test/groupher_server/accounts/published/published_repos_test.exs index b371c8a8b..1c96a9a65 100644 --- a/test/groupher_server/accounts/published/published_repos_test.exs +++ b/test/groupher_server/accounts/published/published_repos_test.exs @@ -81,7 +81,7 @@ defmodule GroupherServer.Test.Accounts.Published.Repo do end) filter = %{page: 1, size: 20} - {:ok, articles} = Accounts.paged_published_article_comments(user, :repo, filter) + {:ok, articles} = Accounts.paged_published_comments(user, :repo, filter) entries = articles.entries article = entries |> List.first() diff --git a/test/groupher_server_web/query/accounts/published/published_blogs_test.exs b/test/groupher_server_web/query/accounts/published/published_blogs_test.exs index 5da43cc81..af4c65815 100644 --- a/test/groupher_server_web/query/accounts/published/published_blogs_test.exs +++ b/test/groupher_server_web/query/accounts/published/published_blogs_test.exs @@ -52,7 +52,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Blogs do describe "[account published comments on blog]" do @query """ query($login: String!, $thread: Thread, $filter: PagedFilter!) { - pagedPublishedArticleComments(login: $login, thread: $thread, filter: $filter) { + pagedPublishedComments(login: $login, thread: $thread, filter: $filter) { entries { id bodyHtml @@ -86,7 +86,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Blogs do variables = %{login: user.login, thread: "BLOG", filter: %{page: 1, size: 20}} - results = guest_conn |> query_result(@query, variables, "pagedPublishedArticleComments") + results = guest_conn |> query_result(@query, variables, "pagedPublishedComments") entries = results["entries"] assert results |> is_valid_pagination? diff --git a/test/groupher_server_web/query/accounts/published/published_jobs_test.exs b/test/groupher_server_web/query/accounts/published/published_jobs_test.exs index 943d531b9..6ccb65ebc 100644 --- a/test/groupher_server_web/query/accounts/published/published_jobs_test.exs +++ b/test/groupher_server_web/query/accounts/published/published_jobs_test.exs @@ -52,7 +52,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Jobs do describe "[account published comments on job]" do @query """ query($login: String!, $thread: Thread, $filter: PagedFilter!) { - pagedPublishedArticleComments(login: $login, thread: $thread, filter: $filter) { + pagedPublishedComments(login: $login, thread: $thread, filter: $filter) { entries { id bodyHtml @@ -87,7 +87,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Jobs do variables = %{login: user.login, thread: "JOB", filter: %{page: 1, size: 20}} - results = guest_conn |> query_result(@query, variables, "pagedPublishedArticleComments") + results = guest_conn |> query_result(@query, variables, "pagedPublishedComments") entries = results["entries"] assert results |> is_valid_pagination? diff --git a/test/groupher_server_web/query/accounts/published/published_posts_test.exs b/test/groupher_server_web/query/accounts/published/published_posts_test.exs index 6c73f5369..27a3c1325 100644 --- a/test/groupher_server_web/query/accounts/published/published_posts_test.exs +++ b/test/groupher_server_web/query/accounts/published/published_posts_test.exs @@ -52,7 +52,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Posts do describe "[account published comments on post]" do @query """ query($login: String!, $thread: Thread, $filter: PagedFilter!) { - pagedPublishedArticleComments(login: $login, thread: $thread, filter: $filter) { + pagedPublishedComments(login: $login, thread: $thread, filter: $filter) { entries { id bodyHtml @@ -87,7 +87,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Posts do variables = %{login: user.login, thread: "POST", filter: %{page: 1, size: 20}} - results = guest_conn |> query_result(@query, variables, "pagedPublishedArticleComments") + results = guest_conn |> query_result(@query, variables, "pagedPublishedComments") entries = results["entries"] assert results |> is_valid_pagination? diff --git a/test/groupher_server_web/query/accounts/published/published_repos_test.exs b/test/groupher_server_web/query/accounts/published/published_repos_test.exs index 5cf3659d4..a354260c2 100644 --- a/test/groupher_server_web/query/accounts/published/published_repos_test.exs +++ b/test/groupher_server_web/query/accounts/published/published_repos_test.exs @@ -52,7 +52,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Repos do describe "[account published comments on repo]" do @query """ query($login: String!, $thread: Thread, $filter: PagedFilter!) { - pagedPublishedArticleComments(login: $login, thread: $thread, filter: $filter) { + pagedPublishedComments(login: $login, thread: $thread, filter: $filter) { entries { id bodyHtml @@ -87,7 +87,7 @@ defmodule GroupherServer.Test.Query.Accounts.Published.Repos do variables = %{login: user.login, thread: "REPO", filter: %{page: 1, size: 20}} - results = guest_conn |> query_result(@query, variables, "pagedPublishedArticleComments") + results = guest_conn |> query_result(@query, variables, "pagedPublishedComments") entries = results["entries"] assert results |> is_valid_pagination? From d7e076a6c0b0fbb2263fdab832cca8997d9e694d Mon Sep 17 00:00:00 2001 From: mydearxym Date: Thu, 24 Jun 2021 22:53:10 +0800 Subject: [PATCH 2/3] refactor(cms): reuse paged_articles logic --- lib/groupher_server/accounts/delegates/publish.ex | 3 ++- lib/groupher_server/cms/delegates/article_curd.ex | 13 +++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/groupher_server/accounts/delegates/publish.ex b/lib/groupher_server/accounts/delegates/publish.ex index fac561326..3f771adf5 100644 --- a/lib/groupher_server/accounts/delegates/publish.ex +++ b/lib/groupher_server/accounts/delegates/publish.ex @@ -38,7 +38,8 @@ defmodule GroupherServer.Accounts.Delegate.Publish do articles_count = paged_published_articles.total_count meta = - ensure(user.meta, @default_meta) |> Map.put(:"published_#{thread}s_count", articles_count) + ensure(user.meta, @default_meta) + |> Map.put(:"published_#{thread}s_count", articles_count) ORM.update_meta(user, meta) end diff --git a/lib/groupher_server/cms/delegates/article_curd.ex b/lib/groupher_server/cms/delegates/article_curd.ex index 62c04c714..b94443ccd 100644 --- a/lib/groupher_server/cms/delegates/article_curd.ex +++ b/lib/groupher_server/cms/delegates/article_curd.ex @@ -91,6 +91,9 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do end end + @doc """ + get paged articles + """ def paged_articles(thread, filter) do %{page: page, size: size} = filter @@ -105,14 +108,8 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do end def paged_articles(thread, filter, %User{} = user) do - %{page: page, size: size} = filter - - with {:ok, info} <- match(thread) do - info.model - |> 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) + with {:ok, stateless_paged_articles} <- paged_articles(thread, filter) do + stateless_paged_articles |> mark_viewer_emotion_states(user) |> mark_viewer_has_states(user) |> done() From 1dc819eb293912ee888c2210a7e52dcfa97e8e66 Mon Sep 17 00:00:00 2001 From: mydearxym Date: Thu, 24 Jun 2021 23:58:43 +0800 Subject: [PATCH 3/3] refactor(account): move published logic to CMS --- .../accounts/delegates/publish.ex | 71 ++++--------------- lib/groupher_server/cms/cms.ex | 4 ++ .../cms/delegates/article_curd.ex | 18 +++++ .../cms/delegates/comment_curd.ex | 31 ++++++++ lib/groupher_server/cms/delegates/helper.ex | 10 +-- 5 files changed, 72 insertions(+), 62 deletions(-) diff --git a/lib/groupher_server/accounts/delegates/publish.ex b/lib/groupher_server/accounts/delegates/publish.ex index 3f771adf5..e58c7f121 100644 --- a/lib/groupher_server/accounts/delegates/publish.ex +++ b/lib/groupher_server/accounts/delegates/publish.ex @@ -3,16 +3,12 @@ defmodule GroupherServer.Accounts.Delegate.Publish do user followers / following related """ import Ecto.Query, warn: false - import Helper.Utils, only: [done: 1, ensure: 2] - # import Helper.ErrorCode - import ShortMaps + import Helper.Utils, only: [ensure: 2] - import GroupherServer.CMS.Helper.Matcher + alias GroupherServer.{Accounts, CMS} + alias Accounts.Model.{Embeds, User} - alias GroupherServer.Accounts.Model.{Embeds, User} - alias GroupherServer.CMS.Model.Comment - - alias Helper.{ORM, QueryBuilder} + alias Helper.ORM @default_meta Embeds.UserMeta.default_meta() @@ -20,10 +16,7 @@ defmodule GroupherServer.Accounts.Delegate.Publish do get paged published contets of a user """ def paged_published_articles(%User{id: user_id}, thread, filter) do - with {:ok, info} <- match(thread), - {:ok, user} <- ORM.find(User, user_id) do - do_paged_published_articles(info.model, user, filter) - end + CMS.paged_published_articles(thread, filter, user_id) end @doc """ @@ -32,57 +25,21 @@ defmodule GroupherServer.Accounts.Delegate.Publish do def update_published_states(user_id, thread) do filter = %{page: 1, size: 1} - with {:ok, info} <- match(thread), - {:ok, user} <- ORM.find(User, user_id), - {:ok, paged_published_articles} <- do_paged_published_articles(info.model, user, filter) do - articles_count = paged_published_articles.total_count - - meta = - ensure(user.meta, @default_meta) - |> Map.put(:"published_#{thread}s_count", articles_count) + with {:ok, user} <- ORM.find(User, user_id), + {:ok, paged_articles} <- CMS.paged_published_articles(thread, filter, user_id) do + # + user_meta = ensure(user.meta, @default_meta) + meta = Map.put(user_meta, :"published_#{thread}s_count", paged_articles.total_count) ORM.update_meta(user, meta) end end - defp do_paged_published_articles(queryable, %User{} = user, %{page: page, size: size} = filter) do - queryable - |> join(:inner, [article], author in assoc(article, :author)) - |> where([article, author], author.user_id == ^user.id) - |> select([article, author], article) - |> QueryBuilder.filter_pack(filter) - |> ORM.paginater(~m(page size)a) - |> done() + def paged_published_comments(user, filter) do + CMS.paged_published_comments(user, filter) end - def paged_published_comments(%User{id: user_id}, %{page: page, size: size} = filter) do - with {:ok, user} <- ORM.find(User, user_id) do - Comment - |> join(:inner, [comment], author in assoc(comment, :author)) - |> where([comment, author], author.id == ^user.id) - |> QueryBuilder.filter_pack(filter) - |> ORM.paginater(~m(page size)a) - |> ORM.extract_and_assign_article() - |> done() - end - end - - def paged_published_comments(%User{id: user_id}, thread, %{page: page, size: size} = filter) do - with {:ok, user} <- ORM.find(User, user_id) do - thread = thread |> to_string |> String.upcase() - thread_atom = thread |> String.downcase() |> String.to_atom() - - article_preload = Keyword.new([{thread_atom, [author: :user]}]) - query = from(comment in Comment, preload: ^article_preload) - - query - |> join(:inner, [comment], author in assoc(comment, :author)) - |> where([comment, author], author.id == ^user.id) - |> where([comment, author], comment.thread == ^thread) - |> QueryBuilder.filter_pack(filter) - |> ORM.paginater(~m(page size)a) - |> ORM.extract_and_assign_article() - |> done() - end + def paged_published_comments(user, thread, filter) do + CMS.paged_published_comments(user, thread, filter) end end diff --git a/lib/groupher_server/cms/cms.ex b/lib/groupher_server/cms/cms.ex index 5a5b9c422..575055c81 100644 --- a/lib/groupher_server/cms/cms.ex +++ b/lib/groupher_server/cms/cms.ex @@ -86,6 +86,7 @@ defmodule GroupherServer.CMS do defdelegate paged_articles(queryable, filter), to: ArticleCURD defdelegate paged_articles(queryable, filter, user), to: ArticleCURD + defdelegate paged_published_articles(queryable, filter, user), to: ArticleCURD defdelegate create_article(community, thread, attrs, user), to: ArticleCURD defdelegate update_article(article, attrs), to: ArticleCURD @@ -133,6 +134,9 @@ defmodule GroupherServer.CMS do defdelegate paged_comments(thread, article_id, filters, mode), to: CommentCurd defdelegate paged_comments(thread, article_id, filters, mode, user), to: CommentCurd + defdelegate paged_published_comments(user, thread, filters), to: CommentCurd + defdelegate paged_published_comments(user, filters), to: CommentCurd + defdelegate paged_folded_article_comments(thread, article_id, filters), to: CommentCurd defdelegate paged_folded_article_comments(thread, article_id, filters, user), to: CommentCurd diff --git a/lib/groupher_server/cms/delegates/article_curd.ex b/lib/groupher_server/cms/delegates/article_curd.ex index b94443ccd..c3756a1a6 100644 --- a/lib/groupher_server/cms/delegates/article_curd.ex +++ b/lib/groupher_server/cms/delegates/article_curd.ex @@ -116,6 +116,24 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do end end + @doc "paged published articles for accounts" + def paged_published_articles(thread, filter, user_id) do + %{page: page, size: size} = filter + + with {:ok, info} <- match(thread), + {:ok, user} <- ORM.find(User, user_id) do + info.model + |> join(:inner, [article], author in assoc(article, :author)) + |> where([article, author], author.user_id == ^user.id) + |> select([article, author], article) + |> QueryBuilder.filter_pack(filter) + |> ORM.paginater(~m(page size)a) + |> mark_viewer_emotion_states(user) + |> mark_viewer_has_states(user) + |> done() + end + end + defp mark_viewer_has_states(%{entries: []} = articles, _), do: articles defp mark_viewer_has_states(%{entries: entries} = articles, user) do diff --git a/lib/groupher_server/cms/delegates/comment_curd.ex b/lib/groupher_server/cms/delegates/comment_curd.ex index 9e630dfea..5093a1614 100644 --- a/lib/groupher_server/cms/delegates/comment_curd.ex +++ b/lib/groupher_server/cms/delegates/comment_curd.ex @@ -52,6 +52,37 @@ defmodule GroupherServer.CMS.Delegate.CommentCurd do do_paged_comment(thread, article_id, filters, where_query, user) end + def paged_published_comments(%User{id: user_id}, filter) do + %{page: page, size: size} = filter + + Comment + |> join(:inner, [comment], author in assoc(comment, :author)) + |> where([comment, author], author.id == ^user_id) + |> QueryBuilder.filter_pack(filter) + |> ORM.paginater(~m(page size)a) + |> ORM.extract_and_assign_article() + |> done() + end + + def paged_published_comments(%User{id: user_id}, thread, filter) do + %{page: page, size: size} = filter + + thread = thread |> to_string |> String.upcase() + thread_atom = thread |> String.downcase() |> String.to_atom() + + article_preload = Keyword.new([{thread_atom, [author: :user]}]) + query = from(comment in Comment, preload: ^article_preload) + + query + |> join(:inner, [comment], author in assoc(comment, :author)) + |> where([comment, author], comment.thread == ^thread) + |> where([comment, author], author.id == ^user_id) + |> QueryBuilder.filter_pack(filter) + |> ORM.paginater(~m(page size)a) + |> ORM.extract_and_assign_article() + |> done() + end + def paged_folded_article_comments(thread, article_id, filters) do where_query = dynamic([c], c.is_folded and not c.is_pinned) do_paged_comment(thread, article_id, filters, where_query, nil) diff --git a/lib/groupher_server/cms/delegates/helper.ex b/lib/groupher_server/cms/delegates/helper.ex index 08bc37d1e..f65a69344 100644 --- a/lib/groupher_server/cms/delegates/helper.ex +++ b/lib/groupher_server/cms/delegates/helper.ex @@ -56,15 +56,15 @@ defmodule GroupherServer.CMS.Delegate.Helper do defp get_supported_mentions(:comment), do: @supported_comment_emotions defp get_supported_mentions(_), do: @supported_emotions - def mark_viewer_emotion_states(paged_contents, nil), do: paged_contents - def mark_viewer_emotion_states(%{entries: []} = paged_contents, _), do: paged_contents - def mark_viewer_emotion_states(paged_contents, nil, :comment), do: paged_contents + def mark_viewer_emotion_states(paged_artiments, nil), do: paged_artiments + def mark_viewer_emotion_states(%{entries: []} = paged_artiments, _), do: paged_artiments + def mark_viewer_emotion_states(paged_artiments, nil, :comment), do: paged_artiments @doc """ mark viewer emotions status for article or comment """ def mark_viewer_emotion_states( - %{entries: entries} = paged_contents, + %{entries: entries} = paged_artiments, %User{} = user, type \\ :article ) do @@ -84,7 +84,7 @@ defmodule GroupherServer.CMS.Delegate.Helper do Map.put(article, :emotions, updated_emotions) end) - %{paged_contents | entries: new_entries} + %{paged_artiments | entries: new_entries} end @doc """