Add an assets list command
This commit is contained in:
parent
a8796b2728
commit
c026375ce1
5 changed files with 109 additions and 5 deletions
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue