Support assets upserts

This commit is contained in:
Claudio Ortolina
2025-09-01 15:06:00 +03:00
parent bd12454884
commit cbf567a502
2 changed files with 7 additions and 9 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ defmodule MusicLibrary.Assets do
def store(params) do
%Asset{}
|> Asset.changeset(params)
|> Repo.insert()
|> Repo.insert(on_conflict: :nothing, returning: true)
end
@doc """
@@ -18,7 +18,7 @@ defmodule MusicLibrary.Assets do
def store_image(params) do
%Asset{}
|> Asset.image_changeset(params)
|> Repo.insert()
|> Repo.insert(on_conflict: :nothing, returning: true)
end
def get(hash) do
+5 -7
View File
@@ -9,7 +9,7 @@ defmodule MusicLibrary.AssetsTest do
params = %{
content: "some content",
format: "text/plain",
properties: %{language: "english"}
properties: %{"language" => "english"}
}
assert {:ok, asset} = Assets.store(params)
@@ -19,17 +19,15 @@ defmodule MusicLibrary.AssetsTest do
assert asset.format == "text/plain"
end
test "prevents duplicates" do
test "prevents duplicates returning the same asset" do
params = %{
content: "some content",
format: "text/plain",
properties: %{language: "english"}
properties: %{"language" => "english"}
}
assert {:ok, _asset} = Assets.store(params)
assert {:error, changeset} = Assets.store(params)
assert [hash: {"has already been taken", _}] = changeset.errors
assert {:ok, asset} = Assets.store(params)
assert {:ok, asset} == Assets.store(params)
end
end