feat: Implement media import functionality with repository and bundle support
This commit is contained in:
@@ -49,6 +49,7 @@ impl From<&str> for MediaMetadataSource {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Media {
|
||||
pub id: uuid::Uuid,
|
||||
pub owner_id: uuid::Uuid,
|
||||
@@ -148,7 +149,6 @@ pub struct AlbumShare {
|
||||
pub permission: AlbumPermission,
|
||||
}
|
||||
|
||||
|
||||
pub struct MediaBundle {
|
||||
pub media: Media,
|
||||
pub metadata: Vec<MediaMetadata>,
|
||||
@@ -188,4 +188,4 @@ pub struct PersonShare {
|
||||
pub person_id: uuid::Uuid,
|
||||
pub user_id: uuid::Uuid,
|
||||
pub permission: PersonPermission,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ use crate::{
|
||||
Album, AlbumPermission, FaceRegion, Media, MediaMetadata, Person, PersonPermission, Tag,
|
||||
User,
|
||||
},
|
||||
schema::ListMediaOptions,
|
||||
schema::{ListMediaOptions, MediaImportBundle},
|
||||
};
|
||||
|
||||
#[async_trait]
|
||||
@@ -121,3 +121,8 @@ pub trait PersonShareRepository: Send + Sync {
|
||||
user_id: Uuid,
|
||||
) -> CoreResult<Vec<(Person, PersonPermission)>>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait MediaImportRepository: Send + Sync {
|
||||
async fn create_media_bundle(&self, bundle: MediaImportBundle) -> CoreResult<()>;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::models::AlbumPermission;
|
||||
use crate::models::{AlbumPermission, Media, MediaMetadata};
|
||||
|
||||
pub struct UploadMediaData<'a> {
|
||||
pub owner_id: uuid::Uuid,
|
||||
@@ -74,4 +74,10 @@ pub struct ListMediaOptions {
|
||||
pub struct MetadataFilter {
|
||||
pub tag_name: String,
|
||||
pub tag_value: String,
|
||||
}
|
||||
}
|
||||
|
||||
pub struct MediaImportBundle {
|
||||
pub media_model: Media,
|
||||
pub metadata_models: Vec<MediaMetadata>,
|
||||
pub file_size: i64,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user