Search documentation of phoenix_kit

# PhoenixKit.Storage.FileLocation (phoenix_kit v1.6.19)

View Source

Schema for physical storage locations (redundancy tracking).

Tracks where each file instance is physically stored. Each instance can have multiple locations for redundancy (1-5 copies across different buckets).

## Redundancy Example

If `storage_redundancy_copies = 2`, each file instance will have 2 location records:

    # Location 1: Backblaze B2
    %FileLocation{
      path: "/uploads/018e3c4a-9f6b-7890-thumbnail.jpg",
      status: "active",
      priority: 0,
      file_instance_id: "...",
      bucket_id: "b2_bucket_id"
    }

    # Location 2: Cloudflare R2
    %FileLocation{
      path: "/uploads/018e3c4a-9f6b-7890-thumbnail.jpg",
      status: "active",
      priority: 0,
      file_instance_id: "...",
      bucket_id: "r2_bucket_id"
    }

## Status Flow

- `active` - File is available at this location
- `syncing` - File is being uploaded/copied
- `failed` - Upload or sync failed
- `deleted` - File has been removed from this location

## Fields

- `path` - Full path within the bucket
- `status` - Current state of this location
- `priority` - Retrieval priority (0 = lowest, higher = preferred)
- `last_verified_at` - Last health check timestamp
- `file_instance_id` - Which instance this location stores
- `bucket_id` - Which bucket this file is stored in

## Examples

    # Active location on local storage
    %FileLocation{
      path: "/var/uploads/018e3c4a-9f6b-7890-large.jpg",
      status: "active",
      priority: 0,
      last_verified_at: ~N[2025-10-28 10:00:00],
      file_instance_id: "...",
      bucket_id: "local_bucket_id"
    }

    # Syncing to cloud backup
    %FileLocation{
      path: "/uploads/018e3c4a-9f6b-7890-large.jpg",
      status: "syncing",
      priority: 0,
      file_instance_id: "...",
      bucket_id: "s3_bucket_id"
    }

# Summary

## Types

t()

## Functions

active?(arg1)

Returns whether this location is active and available.

changeset(location, attrs)

Changeset for creating or updating a file location.

deleted?(arg1)

Returns whether this location has been deleted.

failed?(arg1)

Returns whether this location has failed.

syncing?(arg1)

Returns whether this location is currently syncing.

# Types

# t()

    @type t() :: %PhoenixKit.Storage.FileLocation{
      __meta__: term(),
      bucket: PhoenixKit.Storage.Bucket.t() | Ecto.Association.NotLoaded.t(),
      bucket_id: UUIDv7.t() | nil,
      file_instance:
        PhoenixKit.Storage.FileInstance.t() | Ecto.Association.NotLoaded.t(),
      file_instance_id: UUIDv7.t() | nil,
      id: UUIDv7.t() | nil,
      inserted_at: NaiveDateTime.t() | nil,
      last_verified_at: NaiveDateTime.t() | nil,
      path: String.t(),
      priority: integer(),
      status: String.t(),
      updated_at: NaiveDateTime.t() | nil
    }

# Functions

# active?(arg1)

Returns whether this location is active and available.

# changeset(location, attrs)

Changeset for creating or updating a file location.

## Required Fields

- `path`
- `file_instance_id`
- `bucket_id`

## Validation Rules

- Status must be valid (active, syncing, failed, deleted)
- Priority must be >= 0

# deleted?(arg1)

Returns whether this location has been deleted.

# failed?(arg1)

Returns whether this location has failed.

# syncing?(arg1)

Returns whether this location is currently syncing.