Search documentation of phoenix_kit

# PhoenixKit.Migrations.Postgres.V20 (phoenix_kit v1.7.87)

Copy Markdown View Source

PhoenixKit V20 Migration: Distributed File Storage System

Adds comprehensive distributed file storage with multi-location redundancy, automatic variant generation, and smart volume selection.

## Changes

### Storage Buckets Table (phoenix_kit_buckets)

- Stores storage provider configurations (local, S3, B2, R2)
- Priority-based volume selection (0 = random/emptiest, >0 = specific priority)
- Tracks max capacity and credentials per bucket

### Files Table (phoenix_kit_files)

- Original file uploads with metadata
- Supports images, videos, documents, archives
- JSONB metadata for EXIF, codec info, etc.
- Links to user for ownership tracking

### File Instances Table (phoenix_kit_file_instances)

- File variants (thumbnails, resizes, video qualities)
- Tracks processing status per variant
- One original + multiple generated variants

### File Locations Table (phoenix_kit_file_locations)

- Physical storage locations for redundancy
- Maps instances to specific buckets
- Supports 1-5 redundant copies across buckets

### Storage Dimensions Table (phoenix_kit_storage_dimensions)

- Admin-configurable dimension presets
- Seeded with defaults: thumbnail, small, medium, large, 360p, 720p, 1080p
- Applies to images, videos, or both

## Features

- UUIDv7 Primary Keys: Time-sortable IDs for all storage tables
- Multi-location Redundancy: Store files across multiple buckets
- Smart Volume Selection: Priority system + emptiest drive selection
- Token-based URLs: Secure file access preventing enumeration
- Automatic Variants: Generate thumbnails, resizes, video qualities
- PostgreSQL JSONB: Flexible metadata storage

## Settings

- `storage_redundancy_copies`: How many bucket copies (default: 1)
- `storage_auto_generate_variants`: Auto-generate thumbnails/resizes (default: true)
- `storage_default_bucket_id`: Default bucket for uploads (optional)

## Summary

### Functions

down(opts)

Rollback the V20 migration.

up(opts)

Run the V20 migration to add distributed storage system.

## Functions

# down(opts)

Rollback the V20 migration.

# up(opts)

Run the V20 migration to add distributed storage system.