Add utilities around albums and assets
This commit is contained in:
		
							parent
							
								
									d37ab08728
								
							
						
					
					
						commit
						a8796b2728
					
				
					 3 changed files with 91 additions and 0 deletions
				
			
		
							
								
								
									
										21
									
								
								src/utils/albums.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/utils/albums.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
use crate::{
 | 
			
		||||
    types::{AlbumResponseDto, AssetResponseDto},
 | 
			
		||||
    Client,
 | 
			
		||||
};
 | 
			
		||||
use color_eyre::eyre::Result;
 | 
			
		||||
use uuid::Uuid;
 | 
			
		||||
 | 
			
		||||
pub async fn fetch_all_albums(client: &Client) -> Result<Vec<AlbumResponseDto>> {
 | 
			
		||||
    Ok(client.get_all_albums(None, None).await?.to_vec())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn fetch_album_assets(
 | 
			
		||||
    album_uuid: &Uuid,
 | 
			
		||||
    client: &Client,
 | 
			
		||||
) -> Result<Vec<AssetResponseDto>> {
 | 
			
		||||
    Ok(client
 | 
			
		||||
        .get_album_info(album_uuid, None, Some(false))
 | 
			
		||||
        .await?
 | 
			
		||||
        .assets
 | 
			
		||||
        .clone())
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										68
									
								
								src/utils/assets.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/utils/assets.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
use crate::{
 | 
			
		||||
    types::{AssetResponseDto, MetadataSearchDto},
 | 
			
		||||
    Client,
 | 
			
		||||
};
 | 
			
		||||
use color_eyre::eyre::Result;
 | 
			
		||||
 | 
			
		||||
pub async fn fetch_all_assets(client: &Client) -> Result<Vec<AssetResponseDto>> {
 | 
			
		||||
    let mut all_assets = Vec::new();
 | 
			
		||||
    let mut page_number = None;
 | 
			
		||||
    let mut has_next_page = true;
 | 
			
		||||
 | 
			
		||||
    while has_next_page {
 | 
			
		||||
        let fetched = client
 | 
			
		||||
            .search_metadata(&MetadataSearchDto {
 | 
			
		||||
                checksum: None,
 | 
			
		||||
                city: None,
 | 
			
		||||
                country: None,
 | 
			
		||||
                created_after: None,
 | 
			
		||||
                created_before: None,
 | 
			
		||||
                device_asset_id: None,
 | 
			
		||||
                device_id: None,
 | 
			
		||||
                encoded_video_path: None,
 | 
			
		||||
                id: None,
 | 
			
		||||
                is_archived: None,
 | 
			
		||||
                is_encoded: None,
 | 
			
		||||
                is_favorite: None,
 | 
			
		||||
                is_motion: None,
 | 
			
		||||
                is_not_in_album: None,
 | 
			
		||||
                is_offline: None,
 | 
			
		||||
                is_visible: None,
 | 
			
		||||
                lens_model: None,
 | 
			
		||||
                library_id: None,
 | 
			
		||||
                make: None,
 | 
			
		||||
                model: None,
 | 
			
		||||
                order: None,
 | 
			
		||||
                original_file_name: None,
 | 
			
		||||
                original_path: None,
 | 
			
		||||
                page: page_number,
 | 
			
		||||
                person_ids: vec![],
 | 
			
		||||
                preview_path: None,
 | 
			
		||||
                size: None,
 | 
			
		||||
                state: None,
 | 
			
		||||
                taken_after: None,
 | 
			
		||||
                taken_before: None,
 | 
			
		||||
                thumbnail_path: None,
 | 
			
		||||
                trashed_after: None,
 | 
			
		||||
                trashed_before: None,
 | 
			
		||||
                type_: None,
 | 
			
		||||
                updated_after: None,
 | 
			
		||||
                updated_before: None,
 | 
			
		||||
                with_archived: true,
 | 
			
		||||
                with_deleted: None,
 | 
			
		||||
                with_exif: None,
 | 
			
		||||
                with_people: None,
 | 
			
		||||
                with_stacked: None,
 | 
			
		||||
            })
 | 
			
		||||
            .await?;
 | 
			
		||||
        all_assets.extend(fetched.assets.items.clone());
 | 
			
		||||
        has_next_page = fetched.assets.next_page.is_some();
 | 
			
		||||
        page_number = fetched
 | 
			
		||||
            .assets
 | 
			
		||||
            .next_page
 | 
			
		||||
            .clone()
 | 
			
		||||
            .map(|page| page.parse::<f64>().unwrap());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Ok(all_assets)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +1,3 @@
 | 
			
		|||
pub mod albums;
 | 
			
		||||
pub mod assets;
 | 
			
		||||
pub mod people;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue