Files
music_library/lib/music_library/online_store_templates.ex
T
Claudio Ortolina 07218d16ca Removes useless docs
2025-10-10 14:21:20 +02:00

56 lines
1.5 KiB
Elixir

defmodule MusicLibrary.OnlineStoreTemplates do
@moduledoc """
Includes functions to manipulate online store templates.
"""
import Ecto.Query, warn: false
alias MusicLibrary.OnlineStoreTemplates.OnlineStoreTemplate
alias MusicLibrary.Repo
def list_enabled_templates do
OnlineStoreTemplate
|> where([t], t.enabled == true)
|> order_by([t], fragment("? COLLATE NOCASE ASC", t.name))
|> Repo.all()
end
def list_templates do
OnlineStoreTemplate
|> order_by([t], fragment("? COLLATE NOCASE ASC", t.name))
|> Repo.all()
end
def get_template!(id), do: Repo.get!(OnlineStoreTemplate, id)
def create_template(attrs \\ %{}) do
%OnlineStoreTemplate{}
|> OnlineStoreTemplate.changeset(attrs)
|> Repo.insert()
end
def update_template(%OnlineStoreTemplate{} = template, attrs) do
template
|> OnlineStoreTemplate.changeset(attrs)
|> Repo.update()
end
def delete_template(%OnlineStoreTemplate{} = template) do
Repo.delete(template)
end
def change_template(%OnlineStoreTemplate{} = template, attrs \\ %{}) do
OnlineStoreTemplate.changeset(template, attrs)
end
def generate_url(template, record) do
artists_string = Enum.map_join(record.artists, " ", & &1.name)
format_string = Atom.to_string(record.format)
template.url_template
|> String.replace("{artist}", URI.encode_www_form(artists_string))
|> String.replace("{title}", URI.encode_www_form(record.title))
|> String.replace("{format}", URI.encode_www_form(format_string))
end
end