Support assets upserts
This commit is contained in:
@@ -9,7 +9,7 @@ defmodule MusicLibrary.Assets do
|
|||||||
def store(params) do
|
def store(params) do
|
||||||
%Asset{}
|
%Asset{}
|
||||||
|> Asset.changeset(params)
|
|> Asset.changeset(params)
|
||||||
|> Repo.insert()
|
|> Repo.insert(on_conflict: :nothing, returning: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
@@ -18,7 +18,7 @@ defmodule MusicLibrary.Assets do
|
|||||||
def store_image(params) do
|
def store_image(params) do
|
||||||
%Asset{}
|
%Asset{}
|
||||||
|> Asset.image_changeset(params)
|
|> Asset.image_changeset(params)
|
||||||
|> Repo.insert()
|
|> Repo.insert(on_conflict: :nothing, returning: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
def get(hash) do
|
def get(hash) do
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ defmodule MusicLibrary.AssetsTest do
|
|||||||
params = %{
|
params = %{
|
||||||
content: "some content",
|
content: "some content",
|
||||||
format: "text/plain",
|
format: "text/plain",
|
||||||
properties: %{language: "english"}
|
properties: %{"language" => "english"}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert {:ok, asset} = Assets.store(params)
|
assert {:ok, asset} = Assets.store(params)
|
||||||
@@ -19,17 +19,15 @@ defmodule MusicLibrary.AssetsTest do
|
|||||||
assert asset.format == "text/plain"
|
assert asset.format == "text/plain"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "prevents duplicates" do
|
test "prevents duplicates returning the same asset" do
|
||||||
params = %{
|
params = %{
|
||||||
content: "some content",
|
content: "some content",
|
||||||
format: "text/plain",
|
format: "text/plain",
|
||||||
properties: %{language: "english"}
|
properties: %{"language" => "english"}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert {:ok, _asset} = Assets.store(params)
|
assert {:ok, asset} = Assets.store(params)
|
||||||
assert {:error, changeset} = Assets.store(params)
|
assert {:ok, asset} == Assets.store(params)
|
||||||
|
|
||||||
assert [hash: {"has already been taken", _}] = changeset.errors
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user