Packages

ActiveStorage-like file storage for Phoenix. All things file uploads for your Phoenix app.

Current section

Files

Jump to
phoenix_contrib_storage lib storage config.ex
Raw

lib/storage/config.ex

defmodule Storage.Config do
@moduledoc """
Configuration management for Storage.
"""
@doc """
Returns the default service name.
"""
def default_service do
Application.get_env(:phoenix_contrib_storage, :default_service, :local)
end
@doc """
Returns all configured services.
"""
def services do
Application.get_env(:phoenix_contrib_storage, :services, %{
local: {Storage.Services.Local, root: "/tmp/storage"}
})
end
@doc """
Returns the configuration for a specific service.
"""
def service_config(service_name) do
case Map.get(services(), service_name) do
{module, config} -> {module, config}
nil -> raise ArgumentError, "Service #{inspect(service_name)} not configured"
end
end
@doc """
Returns the module for a specific service.
"""
def service_module(service_name) do
{module, _config} = service_config(service_name)
module
end
@doc """
Returns the Repo module to use for database operations.
"""
def repo do
Application.get_env(:phoenix_contrib_storage, :repo) || raise "Storage repo not configured"
end
end