Support assets upserts
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user