diff options
author | Maksim Pechnikov <parallel588@gmail.com> | 2020-08-16 06:54:48 +0300 |
---|---|---|
committer | Maksim Pechnikov <parallel588@gmail.com> | 2020-08-16 06:54:48 +0300 |
commit | f6da12f45d98707ad5e106e56cf36c055c3e105d (patch) | |
tree | fedde3df8ce8dc952491f2aa14d6c7265e0a3f7a /lib/pleroma/web/admin_api | |
parent | 56470647ded20812c47cd9174540911fbe3631f6 (diff) | |
download | pleroma-f6da12f45d98707ad5e106e56cf36c055c3e105d.tar.gz |
fix search media proxy urls
Diffstat (limited to 'lib/pleroma/web/admin_api')
-rw-r--r-- | lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex index 76d3af4ef..131e22d78 100644 --- a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex @@ -38,18 +38,20 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do defp fetch_entries(params) do MediaProxy.cache_table() - |> Cachex.export!() - |> filter_urls(params[:query]) + |> Cachex.stream!(Cachex.Query.create(true, :key)) + |> filter_entries(params[:query]) end - defp filter_urls(entries, query) when is_binary(query) do - for {_, url, _, _, _} <- entries, String.contains?(url, query), do: url - end + defp filter_entries(stream, query) when is_binary(query) do + regex = ~r/#{query}/i - defp filter_urls(entries, _) do - Enum.map(entries, fn {_, url, _, _, _} -> url end) + stream + |> Enum.filter(fn url -> String.match?(url, regex) end) + |> Enum.to_list() end + defp filter_entries(stream, _), do: Enum.to_list(stream) + defp paginate_entries(entries, page, page_size) do offset = page_size * (page - 1) Enum.slice(entries, offset, page_size) |