Adds API to return a random record from the collection

This commit is contained in:
Claudio Ortolina
2025-01-01 19:19:40 +00:00
parent 1208d35174
commit d194a54760
3 changed files with 18 additions and 0 deletions
+11
View File
@@ -50,6 +50,17 @@ defmodule MusicLibrary.Collection do
Repo.one!(q)
end
def get_random_record! do
q =
from r in Record,
where: not is_nil(r.purchased_at),
order_by: fragment("RANDOM()"),
limit: 1,
select: ^Records.essential_fields()
Repo.one!(q)
end
def collected_releases(release_ids) do
q =
from r in fragment("records, json_each(records.release_ids)"),
@@ -8,4 +8,10 @@ defmodule MusicLibraryWeb.CollectionController do
render(conn, :show, record: latest_record)
end
def random(conn, _params) do
random_record = Collection.get_random_record!()
render(conn, :show, record: random_record)
end
end
+1
View File
@@ -58,6 +58,7 @@ defmodule MusicLibraryWeb.Router do
pipe_through :api
get "/collection/latest", CollectionController, :latest
get "/collection/random", CollectionController, :random
get "/covers/:record_id", CoverController, :show
end