From 375406a8df587f07a1ab33ab8562034884f28a58 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 24 Oct 2020 14:05:04 -0400 Subject: [PATCH] Limit Fever unread items API to 10k most recent --- .../controllers/fever_controller.ex | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/frenzy_web/controllers/fever_controller.ex b/lib/frenzy_web/controllers/fever_controller.ex index 83f28e2..565dabf 100644 --- a/lib/frenzy_web/controllers/fever_controller.ex +++ b/lib/frenzy_web/controllers/fever_controller.ex @@ -196,7 +196,12 @@ defmodule FrenzyWeb.FeverController do |> Enum.map(fn f -> f.id end) unread = - Repo.all(from i in Item, where: i.feed_id in ^feed_ids, where: [read: false]) + Repo.all( + from i in Item, + where: i.feed_id in ^feed_ids and not i.read, + limit: 10000, + order_by: [desc: :id] + ) |> Enum.map(fn item -> item.id end) |> Enum.join(",") @@ -222,19 +227,20 @@ defmodule FrenzyWeb.FeverController do items = cond do Map.has_key?(params, "with_ids") -> - params["with_ids"] - |> String.split(",") - |> Enum.map(fn id -> - {id, _} = id |> String.trim() |> Integer.parse() - item = Repo.get(Item, id) + item_ids = + params["with_ids"] + |> String.split(",") + |> Enum.map(fn str -> + {id, _} = str |> String.trim() |> Integer.parse() + id + end) - if not is_nil(item) and item.feed_id in feed_ids do - item - else - nil - end - end) - |> Enum.reject(&is_nil/1) + Repo.all( + from i in Item, + where: i.id in ^item_ids, + where: i.feed_id in ^feed_ids, + where: not i.tombstone + ) Map.has_key?(params, "since_id") -> since = Repo.get(Item, params["since_id"])