Current section
Files
Jump to
Current section
Files
lib/resolvers/resolver.ex
defmodule Uploadex.Resolver do
@moduledoc """
Resolver functions to make it easier to use Uploadex with Absinthe.
## Example
In your Absinthe schema, assuming user only has one photo:
object :user do
field :photo_url, :string, resolve: &Uploadex.Resolver.get_file_url/3
end
If it has many photos:
object :user do
field :photos, list_of(:string), resolve: &Uploadex.Resolver.get_files_url/3
end
If an object has many files but the field is for a specific one:
object :company do
field :logo_url, :string, resolve: fn company, _, _ -> Uploadex.Resolver.get_file_url(company, company.logo) end
end
"""
alias Uploadex.Files
@spec get_file_url(any) :: (any, any, any -> {:ok, any})
def get_file_url(field) do
fn record, _, _ -> {:ok, record |> Files.get_files_url(field) |> List.first()} end
end
@spec get_file_url(any, any, any) :: {:ok, any}
def get_file_url(record, file, field) do
{:ok, Files.get_file_url(record, file, field)}
end
@spec get_files_url(any) :: (any, any, any -> {:ok, [any]})
def get_files_url(field) do
fn record, _, _ -> {:ok, Files.get_files_url(record, field)} end
end
@spec get_files_url(any, any, any) :: {:ok, [any]}
def get_files_url(record, files, field) do
{:ok, Files.get_files_url(record, files, field)}
end
end