Crate active_storage

source ·
Expand description

§Active Storage

Active Storage streamlines the process of uploading files to cloud storage, offering both local disk-based and in-memory services for development and testing. Additionally, it supports mirroring files to subordinate services, enhancing capabilities for backups and migrations.

It’s inspired by Rails Active Store

§Services

§Examples

use std::path::PathBuf;

use active_storage::{drivers, StoreConfig};

#[tokio::main]
async fn main() {
    let config = drivers::disk::Config {
        location: PathBuf::from("tmp"),
    };
    let disk_driver = StoreConfig::Disk(config).build().await.unwrap();

    let file_path = PathBuf::from("test.txt");
    disk_driver
        .write(file_path.as_path(), "my content")
        .await
        .unwrap();
}

§Mirroring

use std::{collections::HashMap, path::PathBuf};

use active_storage::{drivers, multi_store::MultiStore, StoreConfig};

#[tokio::main]
async fn main() {
    let config = drivers::disk::Config {
        location: PathBuf::from("tmp").join("primary-storage"),
    };
    let store_one = StoreConfig::Disk(config).build().await.unwrap();

    let config = drivers::disk::Config {
        location: PathBuf::from("tmp").join("backups"),
    };
    let secondary_store = StoreConfig::Disk(config).build().await.unwrap();

    let mut multi_store = MultiStore::new(store_one);
    multi_store.add_stores(HashMap::from([("secondary", secondary_store)]));

    let _ = multi_store
        .mirror_stores_from_primary()
        .write(PathBuf::from("test").as_path(), b"content")
        .await;
}

Modules§

Enums§

  • The StoreConfig enum represents configuration options for building a storage system. It includes different variants for various storage options, and the availability of these variants depends on compile-time feature flags.