View Source Ash.Type.File.Implementation behaviour (ash v3.3.0)

Behaviour for file implementations that are compatible with Ash.Type.File.

Summary

Types

Errors returned by the implementation.

The source of the file the implementation operates on.

t()

Any module() implementing the Ash.Type.File.Implementation behaviour.

Callbacks

Open IO.device() for the file.

Return path of the file on disk.

Types

@type error() :: term()

Errors returned by the implementation.

@type source() :: term()

The source of the file the implementation operates on.

@type t() :: module()

Any module() implementing the Ash.Type.File.Implementation behaviour.

Callbacks

@callback open(file :: source(), modes :: [File.mode()]) ::
  {:ok, IO.device()} | {:error, error()}

Open IO.device() for the file.

See Ash.Type.File.open/2

The return pid must point to a process following the Erlang I/O Protocol like StringIO or File.

@callback path(file :: source()) :: {:ok, Path.t()} | {:error, error()}

Return path of the file on disk.

See: Ash.Type.File.path/1

This callback is optional. If the file is not stored on disk, this callback can be omitted.