- Updated workspace members to include `libertas_importer`. - Added a new migration to add `thumbnail_path` column to `media` table. - Enhanced configuration structures to include `thumbnail_config`. - Modified `Media` model to include `thumbnail_path`. - Updated `MediaRepository` trait and its implementation to handle thumbnail path updates. - Created `ThumbnailPlugin` for generating thumbnails based on media configurations. - Integrated thumbnail generation into the media processing workflow. - Updated dependencies in `libertas_worker` and `libertas_importer` for image processing.
27 lines
666 B
Rust
27 lines
666 B
Rust
use std::sync::Arc;
|
|
|
|
use async_trait::async_trait;
|
|
|
|
use crate::{
|
|
config::Config, error::CoreResult, models::Media, repositories::{AlbumRepository, MediaRepository, UserRepository}
|
|
};
|
|
|
|
pub struct PluginData {
|
|
pub message: String,
|
|
}
|
|
|
|
pub struct PluginContext {
|
|
pub media_repo: Arc<dyn MediaRepository>,
|
|
pub album_repo: Arc<dyn AlbumRepository>,
|
|
pub user_repo: Arc<dyn UserRepository>,
|
|
pub media_library_path: String,
|
|
pub config: Arc<Config>,
|
|
}
|
|
|
|
#[async_trait]
|
|
pub trait MediaProcessorPlugin: Send + Sync {
|
|
fn name(&self) -> &'static str;
|
|
|
|
async fn process(&self, media: &Media, context: &PluginContext) -> CoreResult<PluginData>;
|
|
}
|