Add an assets list command

This commit is contained in:
Marc Plano-Lesay 2024-11-05 13:40:52 +11:00
parent a8796b2728
commit c026375ce1
Signed by: kernald
GPG key ID: 66A41B08CC62A6CF
5 changed files with 109 additions and 5 deletions

View file

@ -2,9 +2,26 @@ use crate::{
types::{AssetResponseDto, MetadataSearchDto},
Client,
};
use chrono::{TimeZone, Utc};
use color_eyre::eyre::Result;
use log::debug;
#[derive(Debug, Default)]
pub struct AssetQuery {
pub is_offline: Option<bool>,
pub with_exif: bool,
}
pub async fn fetch_all_assets(query: AssetQuery, client: &Client) -> Result<Vec<AssetResponseDto>> {
debug!("Fetching assets with query {:?}", query);
// is_offline is ignored, let's fetch trashed assets instead and filter them later
let trashed_after = if query.is_offline == Some(true) {
Some(Utc.with_ymd_and_hms(1970, 1, 1, 0, 0, 0).unwrap())
} else {
None
};
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;
@ -26,7 +43,7 @@ pub async fn fetch_all_assets(client: &Client) -> Result<Vec<AssetResponseDto>>
is_favorite: None,
is_motion: None,
is_not_in_album: None,
is_offline: None,
is_offline: query.is_offline,
is_visible: None,
lens_model: None,
library_id: None,
@ -43,14 +60,14 @@ pub async fn fetch_all_assets(client: &Client) -> Result<Vec<AssetResponseDto>>
taken_after: None,
taken_before: None,
thumbnail_path: None,
trashed_after: None,
trashed_after,
trashed_before: None,
type_: None,
updated_after: None,
updated_before: None,
with_archived: true,
with_deleted: None,
with_exif: None,
with_exif: Some(query.with_exif),
with_people: None,
with_stacked: None,
})
@ -64,5 +81,9 @@ pub async fn fetch_all_assets(client: &Client) -> Result<Vec<AssetResponseDto>>
.map(|page| page.parse::<f64>().unwrap());
}
if query.is_offline == Some(true) {
all_assets.retain(|asset| asset.is_offline);
}
Ok(all_assets)
}