feat: expose cascade option on bulk update services
This commit is contained in:
@@ -135,12 +135,13 @@ public sealed class AlbumService(
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Bulk updates multiple albums (e.g. visibility).
|
||||
/// Bulk updates multiple albums (e.g. visibility), optionally cascading to their assets.
|
||||
/// </summary>
|
||||
/// <param name="ids">The album IDs to update.</param>
|
||||
/// <param name="dto">The shared update values.</param>
|
||||
public async Task<bool> BulkUpdateAlbumsAsync(List<Guid> ids, AlbumUpdateDto dto) {
|
||||
var payload = new BulkDto<AlbumUpdateDto> { Ids = ids, Data = dto };
|
||||
/// <param name="cascade">Optional cascade options (e.g. cascade a visibility change to assets).</param>
|
||||
public async Task<bool> BulkUpdateAlbumsAsync(List<Guid> ids, AlbumUpdateDto dto, CascadeOptions? cascade = null) {
|
||||
var payload = new BulkDto<AlbumUpdateDto> { Ids = ids, Data = dto, Cascade = cascade };
|
||||
var response = await Client.PostAsJsonAsync("/api/album", payload);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
@@ -154,29 +155,4 @@ public sealed class AlbumService(
|
||||
var response = await Client.PostAsJsonAsync("/api/album/merge", dto);
|
||||
response.EnsureSuccessStatusCode();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For each album, collects non-deleted asset IDs and bulk-updates their visibility.
|
||||
/// Skipped assets: deleted.
|
||||
/// </summary>
|
||||
/// <param name="albumIds">The album IDs whose assets to cascade to.</param>
|
||||
/// <param name="visibility">The target visibility level.</param>
|
||||
public async Task CascadeVisibilityToAssetsAsync(List<Guid> albumIds, EVisibility visibility) {
|
||||
var allAssetIds = new List<Guid>();
|
||||
foreach (var albumId in albumIds) {
|
||||
var album = await GetAlbumAsync(albumId);
|
||||
if (album?.AssetPreviews != null) {
|
||||
allAssetIds.AddRange(
|
||||
album.AssetPreviews
|
||||
.Where(a => a.DeletedAt == null)
|
||||
.Select(a => a.Id)
|
||||
);
|
||||
}
|
||||
}
|
||||
if (allAssetIds.Count > 0) {
|
||||
var payload = new BulkDto<AssetUpdateDto> { Ids = allAssetIds, Data = new AssetUpdateDto { Visibility = visibility } };
|
||||
var response = await Client.PostAsJsonAsync("/api/asset", payload);
|
||||
response.EnsureSuccessStatusCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,12 +111,13 @@ public sealed class PersonService(
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Bulk updates multiple people (e.g. visibility, maintainers).
|
||||
/// Bulk updates multiple people (e.g. visibility, maintainers), optionally cascading to their albums and assets.
|
||||
/// </summary>
|
||||
/// <param name="ids">The person IDs to update.</param>
|
||||
/// <param name="dto">The shared update values.</param>
|
||||
public async Task<bool> BulkUpdatePeopleAsync(List<Guid> ids, PersonUpdateDto dto) {
|
||||
var payload = new BulkDto<PersonUpdateDto> { Ids = ids, Data = dto };
|
||||
/// <param name="cascade">Optional cascade options (e.g. cascade a visibility change to albums and assets).</param>
|
||||
public async Task<bool> BulkUpdatePeopleAsync(List<Guid> ids, PersonUpdateDto dto, CascadeOptions? cascade = null) {
|
||||
var payload = new BulkDto<PersonUpdateDto> { Ids = ids, Data = dto, Cascade = cascade };
|
||||
var response = await Client.PostAsJsonAsync("/api/person", payload);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user