Current section
Files
Jump to
Current section
Files
lib/upload.ex
defmodule Uploadex.Upload do
@moduledoc """
Ecto type that handles upload
"""
@behaviour Ecto.Type
def type, do: :string
# Cast a Plug.Upload
def cast(%{filename: filename, path: path}) do
{:ok, %{
filename: "#{Ecto.UUID.generate()}-#{filename}",
path: path
}}
end
# Cast a file
def cast(filename) when is_binary(filename), do: {:ok, filename}
def cast(_), do: :error
def load(filename) when is_binary(filename), do: {:ok, filename}
def load(_), do: :error
def dump(%{filename: filename}), do: {:ok, filename}
def dump(filename) when is_binary(filename), do: {:ok, filename}
def dump(_), do: :error
end