mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-02-01 03:46:44 +01:00
add tag fetch endpoint
This commit is contained in:
parent
25319f1c76
commit
ea29cef2a1
3 changed files with 42 additions and 2 deletions
|
@ -43,9 +43,9 @@ function fetchAndPersistTags(tagIds) {
|
||||||
for (let i = 0; i < tagIds.length; i += chunk) {
|
for (let i = 0; i < tagIds.length; i += chunk) {
|
||||||
const ids = tagIds.slice(i, i + chunk);
|
const ids = tagIds.slice(i, i + chunk);
|
||||||
|
|
||||||
/*fetch(`${window.booru.apiEndpoint}tags/fetch_many.json?ids[]=${ids.join('&ids[]=')}`)
|
fetch(`/tags/fetch?ids[]=${ids.join('&ids[]=')}`)
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(data => data.tags.forEach(tag => persistTag(tag)));*/
|
.then(data => data.tags.forEach(tag => persistTag(tag)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
39
lib/philomena_web/controllers/tag/fetch_controller.ex
Normal file
39
lib/philomena_web/controllers/tag/fetch_controller.ex
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
defmodule PhilomenaWeb.Tag.FetchController do
|
||||||
|
use PhilomenaWeb, :controller
|
||||||
|
|
||||||
|
alias Philomena.Tags.Tag
|
||||||
|
alias Philomena.Repo
|
||||||
|
import Ecto.Query
|
||||||
|
|
||||||
|
def index(conn, %{"ids" => ids}) when is_list(ids) do
|
||||||
|
# limit amount to 50
|
||||||
|
ids = Enum.take(ids, 50)
|
||||||
|
|
||||||
|
tags =
|
||||||
|
Tag
|
||||||
|
|> where([t], t.id in ^ids)
|
||||||
|
|> Repo.all()
|
||||||
|
|> Enum.map(&tag_json/1)
|
||||||
|
|
||||||
|
conn
|
||||||
|
|> json(%{tags: tags})
|
||||||
|
end
|
||||||
|
|
||||||
|
defp tag_json(tag) do
|
||||||
|
%{
|
||||||
|
id: tag.id,
|
||||||
|
name: tag.name,
|
||||||
|
images: tag.images_count,
|
||||||
|
spoiler_image_uri: tag_image(tag)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
defp tag_image(%{image: image}) when image not in [nil, ""],
|
||||||
|
do: tag_url_root() <> "/" <> image
|
||||||
|
defp tag_image(_other),
|
||||||
|
do: nil
|
||||||
|
|
||||||
|
defp tag_url_root do
|
||||||
|
Application.get_env(:philomena, :tag_url_root)
|
||||||
|
end
|
||||||
|
end
|
|
@ -123,6 +123,7 @@ defmodule PhilomenaWeb.Router do
|
||||||
end
|
end
|
||||||
scope "/tags", Tag, as: :tag do
|
scope "/tags", Tag, as: :tag do
|
||||||
resources "/autocomplete", AutocompleteController, only: [:show], singleton: true
|
resources "/autocomplete", AutocompleteController, only: [:show], singleton: true
|
||||||
|
resources "/fetch", FetchController, only: [:index]
|
||||||
end
|
end
|
||||||
resources "/tags", TagController, only: [:index, :show]
|
resources "/tags", TagController, only: [:index, :show]
|
||||||
scope "/search", Search, as: :search do
|
scope "/search", Search, as: :search do
|
||||||
|
|
Loading…
Reference in a new issue