This commit is contained in:
mertalev 2025-05-19 15:20:18 -04:00
parent f16bdb2a01
commit f5d9bebd84
No known key found for this signature in database
GPG Key ID: DF6ABC77AAD98C95
7 changed files with 272 additions and 0 deletions

View File

@ -122,7 +122,9 @@ Class | Method | HTTP request | Description
*DeprecatedApi* | [**getRandom**](doc//DeprecatedApi.md#getrandom) | **GET** /assets/random | *DeprecatedApi* | [**getRandom**](doc//DeprecatedApi.md#getrandom) | **GET** /assets/random |
*DownloadApi* | [**downloadArchive**](doc//DownloadApi.md#downloadarchive) | **POST** /download/archive | *DownloadApi* | [**downloadArchive**](doc//DownloadApi.md#downloadarchive) | **POST** /download/archive |
*DownloadApi* | [**getDownloadInfo**](doc//DownloadApi.md#getdownloadinfo) | **POST** /download/info | *DownloadApi* | [**getDownloadInfo**](doc//DownloadApi.md#getdownloadinfo) | **POST** /download/info |
*DuplicatesApi* | [**deduplicateAll**](doc//DuplicatesApi.md#deduplicateall) | **POST** /duplicates/bulk/deduplicate |
*DuplicatesApi* | [**getAssetDuplicates**](doc//DuplicatesApi.md#getassetduplicates) | **GET** /duplicates | *DuplicatesApi* | [**getAssetDuplicates**](doc//DuplicatesApi.md#getassetduplicates) | **GET** /duplicates |
*DuplicatesApi* | [**keepAll**](doc//DuplicatesApi.md#keepall) | **POST** /duplicates/bulk/keep |
*FacesApi* | [**createFace**](doc//FacesApi.md#createface) | **POST** /faces | *FacesApi* | [**createFace**](doc//FacesApi.md#createface) | **POST** /faces |
*FacesApi* | [**deleteFace**](doc//FacesApi.md#deleteface) | **DELETE** /faces/{id} | *FacesApi* | [**deleteFace**](doc//FacesApi.md#deleteface) | **DELETE** /faces/{id} |
*FacesApi* | [**getFaces**](doc//FacesApi.md#getfaces) | **GET** /faces | *FacesApi* | [**getFaces**](doc//FacesApi.md#getfaces) | **GET** /faces |
@ -327,6 +329,7 @@ Class | Method | HTTP request | Description
- [CreateLibraryDto](doc//CreateLibraryDto.md) - [CreateLibraryDto](doc//CreateLibraryDto.md)
- [CreateProfileImageResponseDto](doc//CreateProfileImageResponseDto.md) - [CreateProfileImageResponseDto](doc//CreateProfileImageResponseDto.md)
- [DatabaseBackupConfig](doc//DatabaseBackupConfig.md) - [DatabaseBackupConfig](doc//DatabaseBackupConfig.md)
- [DeduplicateAllDto](doc//DeduplicateAllDto.md)
- [DownloadArchiveInfo](doc//DownloadArchiveInfo.md) - [DownloadArchiveInfo](doc//DownloadArchiveInfo.md)
- [DownloadInfoDto](doc//DownloadInfoDto.md) - [DownloadInfoDto](doc//DownloadInfoDto.md)
- [DownloadResponse](doc//DownloadResponse.md) - [DownloadResponse](doc//DownloadResponse.md)

View File

@ -122,6 +122,7 @@ part 'model/create_album_dto.dart';
part 'model/create_library_dto.dart'; part 'model/create_library_dto.dart';
part 'model/create_profile_image_response_dto.dart'; part 'model/create_profile_image_response_dto.dart';
part 'model/database_backup_config.dart'; part 'model/database_backup_config.dart';
part 'model/deduplicate_all_dto.dart';
part 'model/download_archive_info.dart'; part 'model/download_archive_info.dart';
part 'model/download_info_dto.dart'; part 'model/download_info_dto.dart';
part 'model/download_response.dart'; part 'model/download_response.dart';

View File

@ -16,6 +16,45 @@ class DuplicatesApi {
final ApiClient apiClient; final ApiClient apiClient;
/// Performs an HTTP 'POST /duplicates/bulk/deduplicate' operation and returns the [Response].
/// Parameters:
///
/// * [DeduplicateAllDto] deduplicateAllDto (required):
Future<Response> deduplicateAllWithHttpInfo(DeduplicateAllDto deduplicateAllDto,) async {
// ignore: prefer_const_declarations
final apiPath = r'/duplicates/bulk/deduplicate';
// ignore: prefer_final_locals
Object? postBody = deduplicateAllDto;
final queryParams = <QueryParam>[];
final headerParams = <String, String>{};
final formParams = <String, String>{};
const contentTypes = <String>['application/json'];
return apiClient.invokeAPI(
apiPath,
'POST',
queryParams,
postBody,
headerParams,
formParams,
contentTypes.isEmpty ? null : contentTypes.first,
);
}
/// Parameters:
///
/// * [DeduplicateAllDto] deduplicateAllDto (required):
Future<void> deduplicateAll(DeduplicateAllDto deduplicateAllDto,) async {
final response = await deduplicateAllWithHttpInfo(deduplicateAllDto,);
if (response.statusCode >= HttpStatus.badRequest) {
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
}
}
/// Performs an HTTP 'GET /duplicates' operation and returns the [Response]. /// Performs an HTTP 'GET /duplicates' operation and returns the [Response].
Future<Response> getAssetDuplicatesWithHttpInfo() async { Future<Response> getAssetDuplicatesWithHttpInfo() async {
// ignore: prefer_const_declarations // ignore: prefer_const_declarations
@ -59,4 +98,37 @@ class DuplicatesApi {
} }
return null; return null;
} }
/// Performs an HTTP 'POST /duplicates/bulk/keep' operation and returns the [Response].
Future<Response> keepAllWithHttpInfo() async {
// ignore: prefer_const_declarations
final apiPath = r'/duplicates/bulk/keep';
// ignore: prefer_final_locals
Object? postBody;
final queryParams = <QueryParam>[];
final headerParams = <String, String>{};
final formParams = <String, String>{};
const contentTypes = <String>[];
return apiClient.invokeAPI(
apiPath,
'POST',
queryParams,
postBody,
headerParams,
formParams,
contentTypes.isEmpty ? null : contentTypes.first,
);
}
Future<void> keepAll() async {
final response = await keepAllWithHttpInfo();
if (response.statusCode >= HttpStatus.badRequest) {
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
}
}
} }

View File

@ -300,6 +300,8 @@ class ApiClient {
return CreateProfileImageResponseDto.fromJson(value); return CreateProfileImageResponseDto.fromJson(value);
case 'DatabaseBackupConfig': case 'DatabaseBackupConfig':
return DatabaseBackupConfig.fromJson(value); return DatabaseBackupConfig.fromJson(value);
case 'DeduplicateAllDto':
return DeduplicateAllDto.fromJson(value);
case 'DownloadArchiveInfo': case 'DownloadArchiveInfo':
return DownloadArchiveInfo.fromJson(value); return DownloadArchiveInfo.fromJson(value);
case 'DownloadInfoDto': case 'DownloadInfoDto':

View File

@ -0,0 +1,101 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.18
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
part of openapi.api;
class DeduplicateAllDto {
/// Returns a new [DeduplicateAllDto] instance.
DeduplicateAllDto({
this.assetIdsToKeep = const [],
});
List<String> assetIdsToKeep;
@override
bool operator ==(Object other) => identical(this, other) || other is DeduplicateAllDto &&
_deepEquality.equals(other.assetIdsToKeep, assetIdsToKeep);
@override
int get hashCode =>
// ignore: unnecessary_parenthesis
(assetIdsToKeep.hashCode);
@override
String toString() => 'DeduplicateAllDto[assetIdsToKeep=$assetIdsToKeep]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json[r'assetIdsToKeep'] = this.assetIdsToKeep;
return json;
}
/// Returns a new [DeduplicateAllDto] instance and imports its values from
/// [value] if it's a [Map], null otherwise.
// ignore: prefer_constructors_over_static_methods
static DeduplicateAllDto? fromJson(dynamic value) {
upgradeDto(value, "DeduplicateAllDto");
if (value is Map) {
final json = value.cast<String, dynamic>();
return DeduplicateAllDto(
assetIdsToKeep: json[r'assetIdsToKeep'] is Iterable
? (json[r'assetIdsToKeep'] as Iterable).cast<String>().toList(growable: false)
: const [],
);
}
return null;
}
static List<DeduplicateAllDto> listFromJson(dynamic json, {bool growable = false,}) {
final result = <DeduplicateAllDto>[];
if (json is List && json.isNotEmpty) {
for (final row in json) {
final value = DeduplicateAllDto.fromJson(row);
if (value != null) {
result.add(value);
}
}
}
return result.toList(growable: growable);
}
static Map<String, DeduplicateAllDto> mapFromJson(dynamic json) {
final map = <String, DeduplicateAllDto>{};
if (json is Map && json.isNotEmpty) {
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
for (final entry in json.entries) {
final value = DeduplicateAllDto.fromJson(entry.value);
if (value != null) {
map[entry.key] = value;
}
}
}
return map;
}
// maps a json object with a list of DeduplicateAllDto-objects as value to a dart map
static Map<String, List<DeduplicateAllDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
final map = <String, List<DeduplicateAllDto>>{};
if (json is Map && json.isNotEmpty) {
// ignore: parameter_assignments
json = json.cast<String, dynamic>();
for (final entry in json.entries) {
map[entry.key] = DeduplicateAllDto.listFromJson(entry.value, growable: growable,);
}
}
return map;
}
/// The list of required keys that must be present in a JSON.
static const requiredKeys = <String>{
'assetIdsToKeep',
};
}

View File

@ -2732,6 +2732,66 @@
] ]
} }
}, },
"/duplicates/bulk/deduplicate": {
"post": {
"operationId": "deduplicateAll",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeduplicateAllDto"
}
}
},
"required": true
},
"responses": {
"201": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Duplicates"
]
}
},
"/duplicates/bulk/keep": {
"post": {
"operationId": "keepAll",
"parameters": [],
"responses": {
"201": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Duplicates"
]
}
},
"/faces": { "/faces": {
"get": { "get": {
"operationId": "getFaces", "operationId": "getFaces",
@ -9655,6 +9715,21 @@
], ],
"type": "object" "type": "object"
}, },
"DeduplicateAllDto": {
"properties": {
"assetIdsToKeep": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
"assetIdsToKeep"
],
"type": "object"
},
"DownloadArchiveInfo": { "DownloadArchiveInfo": {
"properties": { "properties": {
"assetIds": { "assetIds": {

View File

@ -560,6 +560,9 @@ export type DuplicateResponseDto = {
assets: AssetResponseDto[]; assets: AssetResponseDto[];
duplicateId: string; duplicateId: string;
}; };
export type DeduplicateAllDto = {
assetIdsToKeep: string[];
};
export type PersonResponseDto = { export type PersonResponseDto = {
birthDate: string | null; birthDate: string | null;
/** This property was added in v1.126.0 */ /** This property was added in v1.126.0 */
@ -2176,6 +2179,21 @@ export function getAssetDuplicates(opts?: Oazapfts.RequestOpts) {
...opts ...opts
})); }));
} }
export function deduplicateAll({ deduplicateAllDto }: {
deduplicateAllDto: DeduplicateAllDto;
}, opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchText("/duplicates/bulk/deduplicate", oazapfts.json({
...opts,
method: "POST",
body: deduplicateAllDto
})));
}
export function keepAll(opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchText("/duplicates/bulk/keep", {
...opts,
method: "POST"
}));
}
export function getFaces({ id }: { export function getFaces({ id }: {
id: string; id: string;
}, opts?: Oazapfts.RequestOpts) { }, opts?: Oazapfts.RequestOpts) {