fix merge
This commit is contained in:
parent
f6170e5f7f
commit
698e45a5cb
11 changed files with 442 additions and 18 deletions
175
cli/src/api/open-api/api.ts
generated
175
cli/src/api/open-api/api.ts
generated
|
@ -4,7 +4,7 @@
|
||||||
* Immich
|
* Immich
|
||||||
* Immich API
|
* Immich API
|
||||||
*
|
*
|
||||||
* The version of the OpenAPI document: 1.78.1
|
* The version of the OpenAPI document: 1.81.0
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||||
|
@ -392,6 +392,12 @@ export interface AllJobStatusResponseDto {
|
||||||
* @memberof AllJobStatusResponseDto
|
* @memberof AllJobStatusResponseDto
|
||||||
*/
|
*/
|
||||||
'metadataExtraction': JobStatusDto;
|
'metadataExtraction': JobStatusDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobStatusDto}
|
||||||
|
* @memberof AllJobStatusResponseDto
|
||||||
|
*/
|
||||||
|
'migration': JobStatusDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobStatusDto}
|
* @type {JobStatusDto}
|
||||||
|
@ -1466,6 +1472,22 @@ export interface CheckExistingAssetsResponseDto {
|
||||||
*/
|
*/
|
||||||
'existingIds': Array<string>;
|
'existingIds': Array<string>;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const CitiesFile = {
|
||||||
|
Cities15000: 'cities15000',
|
||||||
|
Cities5000: 'cities5000',
|
||||||
|
Cities1000: 'cities1000',
|
||||||
|
Cities500: 'cities500'
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type CitiesFile = typeof CitiesFile[keyof typeof CitiesFile];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
|
@ -1895,12 +1917,24 @@ export interface ExifEntity {
|
||||||
* @memberof ExifEntity
|
* @memberof ExifEntity
|
||||||
*/
|
*/
|
||||||
'assetId': string;
|
'assetId': string;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof ExifEntity
|
||||||
|
*/
|
||||||
|
'bitsPerSample': number | null;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof ExifEntity
|
* @memberof ExifEntity
|
||||||
*/
|
*/
|
||||||
'city': string | null;
|
'city': string | null;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof ExifEntity
|
||||||
|
*/
|
||||||
|
'colorspace': string | null;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
|
@ -2021,6 +2055,12 @@ export interface ExifEntity {
|
||||||
* @memberof ExifEntity
|
* @memberof ExifEntity
|
||||||
*/
|
*/
|
||||||
'orientation': string | null;
|
'orientation': string | null;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof ExifEntity
|
||||||
|
*/
|
||||||
|
'profileDescription': string | null;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
|
@ -2359,6 +2399,7 @@ export const JobName = {
|
||||||
ClipEncoding: 'clipEncoding',
|
ClipEncoding: 'clipEncoding',
|
||||||
BackgroundTask: 'backgroundTask',
|
BackgroundTask: 'backgroundTask',
|
||||||
StorageTemplateMigration: 'storageTemplateMigration',
|
StorageTemplateMigration: 'storageTemplateMigration',
|
||||||
|
Migration: 'migration',
|
||||||
Search: 'search',
|
Search: 'search',
|
||||||
Sidecar: 'sidecar',
|
Sidecar: 'sidecar',
|
||||||
Library: 'library'
|
Library: 'library'
|
||||||
|
@ -3395,6 +3436,12 @@ export interface ServerFeaturesDto {
|
||||||
* @memberof ServerFeaturesDto
|
* @memberof ServerFeaturesDto
|
||||||
*/
|
*/
|
||||||
'passwordLogin': boolean;
|
'passwordLogin': boolean;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof ServerFeaturesDto
|
||||||
|
*/
|
||||||
|
'reverseGeocoding': boolean;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
|
@ -3974,6 +4021,12 @@ export interface SystemConfigDto {
|
||||||
* @memberof SystemConfigDto
|
* @memberof SystemConfigDto
|
||||||
*/
|
*/
|
||||||
'passwordLogin': SystemConfigPasswordLoginDto;
|
'passwordLogin': SystemConfigPasswordLoginDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {SystemConfigReverseGeocodingDto}
|
||||||
|
* @memberof SystemConfigDto
|
||||||
|
*/
|
||||||
|
'reverseGeocoding': SystemConfigReverseGeocodingDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {SystemConfigStorageTemplateDto}
|
* @type {SystemConfigStorageTemplateDto}
|
||||||
|
@ -4128,6 +4181,12 @@ export interface SystemConfigJobDto {
|
||||||
* @memberof SystemConfigJobDto
|
* @memberof SystemConfigJobDto
|
||||||
*/
|
*/
|
||||||
'metadataExtraction': JobSettingsDto;
|
'metadataExtraction': JobSettingsDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobSettingsDto}
|
||||||
|
* @memberof SystemConfigJobDto
|
||||||
|
*/
|
||||||
|
'migration': JobSettingsDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobSettingsDto}
|
* @type {JobSettingsDto}
|
||||||
|
@ -4313,6 +4372,27 @@ export interface SystemConfigPasswordLoginDto {
|
||||||
*/
|
*/
|
||||||
'enabled': boolean;
|
'enabled': boolean;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface SystemConfigReverseGeocodingDto
|
||||||
|
*/
|
||||||
|
export interface SystemConfigReverseGeocodingDto {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {CitiesFile}
|
||||||
|
* @memberof SystemConfigReverseGeocodingDto
|
||||||
|
*/
|
||||||
|
'citiesFileOverride': CitiesFile;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof SystemConfigReverseGeocodingDto
|
||||||
|
*/
|
||||||
|
'enabled': boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
|
@ -4368,6 +4448,12 @@ export interface SystemConfigTemplateStorageOptionDto {
|
||||||
* @memberof SystemConfigTemplateStorageOptionDto
|
* @memberof SystemConfigTemplateStorageOptionDto
|
||||||
*/
|
*/
|
||||||
'secondOptions': Array<string>;
|
'secondOptions': Array<string>;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {Array<string>}
|
||||||
|
* @memberof SystemConfigTemplateStorageOptionDto
|
||||||
|
*/
|
||||||
|
'weekOptions': Array<string>;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {Array<string>}
|
* @type {Array<string>}
|
||||||
|
@ -7358,6 +7444,49 @@ export const AssetApiAxiosParamCreator = function (configuration?: Configuration
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||||
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||||
|
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||||
|
|
||||||
|
return {
|
||||||
|
url: toPathString(localVarUrlObj),
|
||||||
|
options: localVarRequestOptions,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {number} [count]
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
*/
|
||||||
|
getRandom: async (count?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||||
|
const localVarPath = `/asset/random`;
|
||||||
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||||
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
||||||
|
let baseOptions;
|
||||||
|
if (configuration) {
|
||||||
|
baseOptions = configuration.baseOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
|
||||||
|
const localVarHeaderParameter = {} as any;
|
||||||
|
const localVarQueryParameter = {} as any;
|
||||||
|
|
||||||
|
// authentication cookie required
|
||||||
|
|
||||||
|
// authentication api_key required
|
||||||
|
await setApiKeyToObject(localVarHeaderParameter, "x-api-key", configuration)
|
||||||
|
|
||||||
|
// authentication bearer required
|
||||||
|
// http bearer authentication required
|
||||||
|
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
||||||
|
|
||||||
|
if (count !== undefined) {
|
||||||
|
localVarQueryParameter['count'] = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||||
|
@ -8098,6 +8227,16 @@ export const AssetApiFp = function(configuration?: Configuration) {
|
||||||
const localVarAxiosArgs = await localVarAxiosParamCreator.getMemoryLane(timestamp, options);
|
const localVarAxiosArgs = await localVarAxiosParamCreator.getMemoryLane(timestamp, options);
|
||||||
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
|
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {number} [count]
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
*/
|
||||||
|
async getRandom(count?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AssetResponseDto>>> {
|
||||||
|
const localVarAxiosArgs = await localVarAxiosParamCreator.getRandom(count, options);
|
||||||
|
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {TimeBucketSize} size
|
* @param {TimeBucketSize} size
|
||||||
|
@ -8373,6 +8512,15 @@ export const AssetApiFactory = function (configuration?: Configuration, basePath
|
||||||
getMemoryLane(requestParameters: AssetApiGetMemoryLaneRequest, options?: AxiosRequestConfig): AxiosPromise<Array<MemoryLaneResponseDto>> {
|
getMemoryLane(requestParameters: AssetApiGetMemoryLaneRequest, options?: AxiosRequestConfig): AxiosPromise<Array<MemoryLaneResponseDto>> {
|
||||||
return localVarFp.getMemoryLane(requestParameters.timestamp, options).then((request) => request(axios, basePath));
|
return localVarFp.getMemoryLane(requestParameters.timestamp, options).then((request) => request(axios, basePath));
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {AssetApiGetRandomRequest} requestParameters Request parameters.
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
*/
|
||||||
|
getRandom(requestParameters: AssetApiGetRandomRequest = {}, options?: AxiosRequestConfig): AxiosPromise<Array<AssetResponseDto>> {
|
||||||
|
return localVarFp.getRandom(requestParameters.count, options).then((request) => request(axios, basePath));
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
||||||
|
@ -8807,6 +8955,20 @@ export interface AssetApiGetMemoryLaneRequest {
|
||||||
readonly timestamp: string
|
readonly timestamp: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request parameters for getRandom operation in AssetApi.
|
||||||
|
* @export
|
||||||
|
* @interface AssetApiGetRandomRequest
|
||||||
|
*/
|
||||||
|
export interface AssetApiGetRandomRequest {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof AssetApiGetRandom
|
||||||
|
*/
|
||||||
|
readonly count?: number
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request parameters for getTimeBuckets operation in AssetApi.
|
* Request parameters for getTimeBuckets operation in AssetApi.
|
||||||
* @export
|
* @export
|
||||||
|
@ -9299,6 +9461,17 @@ export class AssetApi extends BaseAPI {
|
||||||
return AssetApiFp(this.configuration).getMemoryLane(requestParameters.timestamp, options).then((request) => request(this.axios, this.basePath));
|
return AssetApiFp(this.configuration).getMemoryLane(requestParameters.timestamp, options).then((request) => request(this.axios, this.basePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {AssetApiGetRandomRequest} requestParameters Request parameters.
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
* @memberof AssetApi
|
||||||
|
*/
|
||||||
|
public getRandom(requestParameters: AssetApiGetRandomRequest = {}, options?: AxiosRequestConfig) {
|
||||||
|
return AssetApiFp(this.configuration).getRandom(requestParameters.count, options).then((request) => request(this.axios, this.basePath));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
||||||
|
|
6
mobile/openapi/.openapi-generator/FILES
generated
6
mobile/openapi/.openapi-generator/FILES
generated
|
@ -48,6 +48,7 @@ doc/CheckDuplicateAssetDto.md
|
||||||
doc/CheckDuplicateAssetResponseDto.md
|
doc/CheckDuplicateAssetResponseDto.md
|
||||||
doc/CheckExistingAssetsDto.md
|
doc/CheckExistingAssetsDto.md
|
||||||
doc/CheckExistingAssetsResponseDto.md
|
doc/CheckExistingAssetsResponseDto.md
|
||||||
|
doc/CitiesFile.md
|
||||||
doc/ClassificationConfig.md
|
doc/ClassificationConfig.md
|
||||||
doc/Colorspace.md
|
doc/Colorspace.md
|
||||||
doc/CreateAlbumDto.md
|
doc/CreateAlbumDto.md
|
||||||
|
@ -136,6 +137,7 @@ doc/SystemConfigMachineLearningDto.md
|
||||||
doc/SystemConfigMapDto.md
|
doc/SystemConfigMapDto.md
|
||||||
doc/SystemConfigOAuthDto.md
|
doc/SystemConfigOAuthDto.md
|
||||||
doc/SystemConfigPasswordLoginDto.md
|
doc/SystemConfigPasswordLoginDto.md
|
||||||
|
doc/SystemConfigReverseGeocodingDto.md
|
||||||
doc/SystemConfigStorageTemplateDto.md
|
doc/SystemConfigStorageTemplateDto.md
|
||||||
doc/SystemConfigTemplateStorageOptionDto.md
|
doc/SystemConfigTemplateStorageOptionDto.md
|
||||||
doc/SystemConfigThumbnailDto.md
|
doc/SystemConfigThumbnailDto.md
|
||||||
|
@ -224,6 +226,7 @@ lib/model/check_duplicate_asset_dto.dart
|
||||||
lib/model/check_duplicate_asset_response_dto.dart
|
lib/model/check_duplicate_asset_response_dto.dart
|
||||||
lib/model/check_existing_assets_dto.dart
|
lib/model/check_existing_assets_dto.dart
|
||||||
lib/model/check_existing_assets_response_dto.dart
|
lib/model/check_existing_assets_response_dto.dart
|
||||||
|
lib/model/cities_file.dart
|
||||||
lib/model/classification_config.dart
|
lib/model/classification_config.dart
|
||||||
lib/model/clip_config.dart
|
lib/model/clip_config.dart
|
||||||
lib/model/clip_mode.dart
|
lib/model/clip_mode.dart
|
||||||
|
@ -306,6 +309,7 @@ lib/model/system_config_machine_learning_dto.dart
|
||||||
lib/model/system_config_map_dto.dart
|
lib/model/system_config_map_dto.dart
|
||||||
lib/model/system_config_o_auth_dto.dart
|
lib/model/system_config_o_auth_dto.dart
|
||||||
lib/model/system_config_password_login_dto.dart
|
lib/model/system_config_password_login_dto.dart
|
||||||
|
lib/model/system_config_reverse_geocoding_dto.dart
|
||||||
lib/model/system_config_storage_template_dto.dart
|
lib/model/system_config_storage_template_dto.dart
|
||||||
lib/model/system_config_template_storage_option_dto.dart
|
lib/model/system_config_template_storage_option_dto.dart
|
||||||
lib/model/system_config_thumbnail_dto.dart
|
lib/model/system_config_thumbnail_dto.dart
|
||||||
|
@ -372,6 +376,7 @@ test/check_duplicate_asset_dto_test.dart
|
||||||
test/check_duplicate_asset_response_dto_test.dart
|
test/check_duplicate_asset_response_dto_test.dart
|
||||||
test/check_existing_assets_dto_test.dart
|
test/check_existing_assets_dto_test.dart
|
||||||
test/check_existing_assets_response_dto_test.dart
|
test/check_existing_assets_response_dto_test.dart
|
||||||
|
test/cities_file_test.dart
|
||||||
test/classification_config_test.dart
|
test/classification_config_test.dart
|
||||||
test/clip_config_test.dart
|
test/clip_config_test.dart
|
||||||
test/clip_mode_test.dart
|
test/clip_mode_test.dart
|
||||||
|
@ -463,6 +468,7 @@ test/system_config_machine_learning_dto_test.dart
|
||||||
test/system_config_map_dto_test.dart
|
test/system_config_map_dto_test.dart
|
||||||
test/system_config_o_auth_dto_test.dart
|
test/system_config_o_auth_dto_test.dart
|
||||||
test/system_config_password_login_dto_test.dart
|
test/system_config_password_login_dto_test.dart
|
||||||
|
test/system_config_reverse_geocoding_dto_test.dart
|
||||||
test/system_config_storage_template_dto_test.dart
|
test/system_config_storage_template_dto_test.dart
|
||||||
test/system_config_template_storage_option_dto_test.dart
|
test/system_config_template_storage_option_dto_test.dart
|
||||||
test/system_config_thumbnail_dto_test.dart
|
test/system_config_thumbnail_dto_test.dart
|
||||||
|
|
5
mobile/openapi/README.md
generated
5
mobile/openapi/README.md
generated
|
@ -3,7 +3,7 @@ Immich API
|
||||||
|
|
||||||
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
||||||
|
|
||||||
- API version: 1.78.1
|
- API version: 1.81.0
|
||||||
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
@ -104,6 +104,7 @@ Class | Method | HTTP request | Description
|
||||||
*AssetApi* | [**getDownloadInfo**](doc//AssetApi.md#getdownloadinfo) | **POST** /asset/download/info |
|
*AssetApi* | [**getDownloadInfo**](doc//AssetApi.md#getdownloadinfo) | **POST** /asset/download/info |
|
||||||
*AssetApi* | [**getMapMarkers**](doc//AssetApi.md#getmapmarkers) | **GET** /asset/map-marker |
|
*AssetApi* | [**getMapMarkers**](doc//AssetApi.md#getmapmarkers) | **GET** /asset/map-marker |
|
||||||
*AssetApi* | [**getMemoryLane**](doc//AssetApi.md#getmemorylane) | **GET** /asset/memory-lane |
|
*AssetApi* | [**getMemoryLane**](doc//AssetApi.md#getmemorylane) | **GET** /asset/memory-lane |
|
||||||
|
*AssetApi* | [**getRandom**](doc//AssetApi.md#getrandom) | **GET** /asset/random |
|
||||||
*AssetApi* | [**getTimeBuckets**](doc//AssetApi.md#gettimebuckets) | **GET** /asset/time-buckets |
|
*AssetApi* | [**getTimeBuckets**](doc//AssetApi.md#gettimebuckets) | **GET** /asset/time-buckets |
|
||||||
*AssetApi* | [**getUserAssetsByDeviceId**](doc//AssetApi.md#getuserassetsbydeviceid) | **GET** /asset/{deviceId} |
|
*AssetApi* | [**getUserAssetsByDeviceId**](doc//AssetApi.md#getuserassetsbydeviceid) | **GET** /asset/{deviceId} |
|
||||||
*AssetApi* | [**importFile**](doc//AssetApi.md#importfile) | **POST** /asset/import |
|
*AssetApi* | [**importFile**](doc//AssetApi.md#importfile) | **POST** /asset/import |
|
||||||
|
@ -234,6 +235,7 @@ Class | Method | HTTP request | Description
|
||||||
- [CheckDuplicateAssetResponseDto](doc//CheckDuplicateAssetResponseDto.md)
|
- [CheckDuplicateAssetResponseDto](doc//CheckDuplicateAssetResponseDto.md)
|
||||||
- [CheckExistingAssetsDto](doc//CheckExistingAssetsDto.md)
|
- [CheckExistingAssetsDto](doc//CheckExistingAssetsDto.md)
|
||||||
- [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md)
|
- [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md)
|
||||||
|
- [CitiesFile](doc//CitiesFile.md)
|
||||||
- [ClassificationConfig](doc//ClassificationConfig.md)
|
- [ClassificationConfig](doc//ClassificationConfig.md)
|
||||||
- [Colorspace](doc//Colorspace.md)
|
- [Colorspace](doc//Colorspace.md)
|
||||||
- [CreateAlbumDto](doc//CreateAlbumDto.md)
|
- [CreateAlbumDto](doc//CreateAlbumDto.md)
|
||||||
|
@ -313,6 +315,7 @@ Class | Method | HTTP request | Description
|
||||||
- [SystemConfigMapDto](doc//SystemConfigMapDto.md)
|
- [SystemConfigMapDto](doc//SystemConfigMapDto.md)
|
||||||
- [SystemConfigOAuthDto](doc//SystemConfigOAuthDto.md)
|
- [SystemConfigOAuthDto](doc//SystemConfigOAuthDto.md)
|
||||||
- [SystemConfigPasswordLoginDto](doc//SystemConfigPasswordLoginDto.md)
|
- [SystemConfigPasswordLoginDto](doc//SystemConfigPasswordLoginDto.md)
|
||||||
|
- [SystemConfigReverseGeocodingDto](doc//SystemConfigReverseGeocodingDto.md)
|
||||||
- [SystemConfigStorageTemplateDto](doc//SystemConfigStorageTemplateDto.md)
|
- [SystemConfigStorageTemplateDto](doc//SystemConfigStorageTemplateDto.md)
|
||||||
- [SystemConfigTemplateStorageOptionDto](doc//SystemConfigTemplateStorageOptionDto.md)
|
- [SystemConfigTemplateStorageOptionDto](doc//SystemConfigTemplateStorageOptionDto.md)
|
||||||
- [SystemConfigThumbnailDto](doc//SystemConfigThumbnailDto.md)
|
- [SystemConfigThumbnailDto](doc//SystemConfigThumbnailDto.md)
|
||||||
|
|
3
mobile/openapi/doc/ExifEntity.md
generated
3
mobile/openapi/doc/ExifEntity.md
generated
|
@ -10,7 +10,9 @@ Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**asset** | [**AssetEntity**](AssetEntity.md) | | [optional]
|
**asset** | [**AssetEntity**](AssetEntity.md) | | [optional]
|
||||||
**assetId** | **String** | |
|
**assetId** | **String** | |
|
||||||
|
**bitsPerSample** | **num** | |
|
||||||
**city** | **String** | |
|
**city** | **String** | |
|
||||||
|
**colorspace** | **String** | |
|
||||||
**country** | **String** | |
|
**country** | **String** | |
|
||||||
**dateTimeOriginal** | [**DateTime**](DateTime.md) | |
|
**dateTimeOriginal** | [**DateTime**](DateTime.md) | |
|
||||||
**description** | **String** | General info |
|
**description** | **String** | General info |
|
||||||
|
@ -31,6 +33,7 @@ Name | Type | Description | Notes
|
||||||
**model** | **String** | |
|
**model** | **String** | |
|
||||||
**modifyDate** | [**DateTime**](DateTime.md) | |
|
**modifyDate** | [**DateTime**](DateTime.md) | |
|
||||||
**orientation** | **String** | |
|
**orientation** | **String** | |
|
||||||
|
**profileDescription** | **String** | |
|
||||||
**projectionType** | **String** | |
|
**projectionType** | **String** | |
|
||||||
**state** | **String** | |
|
**state** | **String** | |
|
||||||
**timeZone** | **String** | |
|
**timeZone** | **String** | |
|
||||||
|
|
2
mobile/openapi/lib/api.dart
generated
2
mobile/openapi/lib/api.dart
generated
|
@ -85,6 +85,7 @@ part 'model/check_duplicate_asset_dto.dart';
|
||||||
part 'model/check_duplicate_asset_response_dto.dart';
|
part 'model/check_duplicate_asset_response_dto.dart';
|
||||||
part 'model/check_existing_assets_dto.dart';
|
part 'model/check_existing_assets_dto.dart';
|
||||||
part 'model/check_existing_assets_response_dto.dart';
|
part 'model/check_existing_assets_response_dto.dart';
|
||||||
|
part 'model/cities_file.dart';
|
||||||
part 'model/classification_config.dart';
|
part 'model/classification_config.dart';
|
||||||
part 'model/colorspace.dart';
|
part 'model/colorspace.dart';
|
||||||
part 'model/create_album_dto.dart';
|
part 'model/create_album_dto.dart';
|
||||||
|
@ -164,6 +165,7 @@ part 'model/system_config_machine_learning_dto.dart';
|
||||||
part 'model/system_config_map_dto.dart';
|
part 'model/system_config_map_dto.dart';
|
||||||
part 'model/system_config_o_auth_dto.dart';
|
part 'model/system_config_o_auth_dto.dart';
|
||||||
part 'model/system_config_password_login_dto.dart';
|
part 'model/system_config_password_login_dto.dart';
|
||||||
|
part 'model/system_config_reverse_geocoding_dto.dart';
|
||||||
part 'model/system_config_storage_template_dto.dart';
|
part 'model/system_config_storage_template_dto.dart';
|
||||||
part 'model/system_config_template_storage_option_dto.dart';
|
part 'model/system_config_template_storage_option_dto.dart';
|
||||||
part 'model/system_config_thumbnail_dto.dart';
|
part 'model/system_config_thumbnail_dto.dart';
|
||||||
|
|
4
mobile/openapi/lib/api_client.dart
generated
4
mobile/openapi/lib/api_client.dart
generated
|
@ -261,6 +261,8 @@ class ApiClient {
|
||||||
return CheckExistingAssetsDto.fromJson(value);
|
return CheckExistingAssetsDto.fromJson(value);
|
||||||
case 'CheckExistingAssetsResponseDto':
|
case 'CheckExistingAssetsResponseDto':
|
||||||
return CheckExistingAssetsResponseDto.fromJson(value);
|
return CheckExistingAssetsResponseDto.fromJson(value);
|
||||||
|
case 'CitiesFile':
|
||||||
|
return CitiesFileTypeTransformer().decode(value);
|
||||||
case 'ClassificationConfig':
|
case 'ClassificationConfig':
|
||||||
return ClassificationConfig.fromJson(value);
|
return ClassificationConfig.fromJson(value);
|
||||||
case 'Colorspace':
|
case 'Colorspace':
|
||||||
|
@ -419,6 +421,8 @@ class ApiClient {
|
||||||
return SystemConfigOAuthDto.fromJson(value);
|
return SystemConfigOAuthDto.fromJson(value);
|
||||||
case 'SystemConfigPasswordLoginDto':
|
case 'SystemConfigPasswordLoginDto':
|
||||||
return SystemConfigPasswordLoginDto.fromJson(value);
|
return SystemConfigPasswordLoginDto.fromJson(value);
|
||||||
|
case 'SystemConfigReverseGeocodingDto':
|
||||||
|
return SystemConfigReverseGeocodingDto.fromJson(value);
|
||||||
case 'SystemConfigStorageTemplateDto':
|
case 'SystemConfigStorageTemplateDto':
|
||||||
return SystemConfigStorageTemplateDto.fromJson(value);
|
return SystemConfigStorageTemplateDto.fromJson(value);
|
||||||
case 'SystemConfigTemplateStorageOptionDto':
|
case 'SystemConfigTemplateStorageOptionDto':
|
||||||
|
|
40
mobile/openapi/lib/model/exif_entity.dart
generated
40
mobile/openapi/lib/model/exif_entity.dart
generated
|
@ -15,7 +15,9 @@ class ExifEntity {
|
||||||
ExifEntity({
|
ExifEntity({
|
||||||
this.asset,
|
this.asset,
|
||||||
required this.assetId,
|
required this.assetId,
|
||||||
|
required this.bitsPerSample,
|
||||||
required this.city,
|
required this.city,
|
||||||
|
required this.colorspace,
|
||||||
required this.country,
|
required this.country,
|
||||||
required this.dateTimeOriginal,
|
required this.dateTimeOriginal,
|
||||||
required this.description,
|
required this.description,
|
||||||
|
@ -36,6 +38,7 @@ class ExifEntity {
|
||||||
required this.model,
|
required this.model,
|
||||||
required this.modifyDate,
|
required this.modifyDate,
|
||||||
required this.orientation,
|
required this.orientation,
|
||||||
|
required this.profileDescription,
|
||||||
required this.projectionType,
|
required this.projectionType,
|
||||||
required this.state,
|
required this.state,
|
||||||
required this.timeZone,
|
required this.timeZone,
|
||||||
|
@ -51,8 +54,12 @@ class ExifEntity {
|
||||||
|
|
||||||
String assetId;
|
String assetId;
|
||||||
|
|
||||||
|
num? bitsPerSample;
|
||||||
|
|
||||||
String? city;
|
String? city;
|
||||||
|
|
||||||
|
String? colorspace;
|
||||||
|
|
||||||
String? country;
|
String? country;
|
||||||
|
|
||||||
DateTime? dateTimeOriginal;
|
DateTime? dateTimeOriginal;
|
||||||
|
@ -96,6 +103,8 @@ class ExifEntity {
|
||||||
|
|
||||||
String? orientation;
|
String? orientation;
|
||||||
|
|
||||||
|
String? profileDescription;
|
||||||
|
|
||||||
String? projectionType;
|
String? projectionType;
|
||||||
|
|
||||||
String? state;
|
String? state;
|
||||||
|
@ -106,7 +115,9 @@ class ExifEntity {
|
||||||
bool operator ==(Object other) => identical(this, other) || other is ExifEntity &&
|
bool operator ==(Object other) => identical(this, other) || other is ExifEntity &&
|
||||||
other.asset == asset &&
|
other.asset == asset &&
|
||||||
other.assetId == assetId &&
|
other.assetId == assetId &&
|
||||||
|
other.bitsPerSample == bitsPerSample &&
|
||||||
other.city == city &&
|
other.city == city &&
|
||||||
|
other.colorspace == colorspace &&
|
||||||
other.country == country &&
|
other.country == country &&
|
||||||
other.dateTimeOriginal == dateTimeOriginal &&
|
other.dateTimeOriginal == dateTimeOriginal &&
|
||||||
other.description == description &&
|
other.description == description &&
|
||||||
|
@ -127,6 +138,7 @@ class ExifEntity {
|
||||||
other.model == model &&
|
other.model == model &&
|
||||||
other.modifyDate == modifyDate &&
|
other.modifyDate == modifyDate &&
|
||||||
other.orientation == orientation &&
|
other.orientation == orientation &&
|
||||||
|
other.profileDescription == profileDescription &&
|
||||||
other.projectionType == projectionType &&
|
other.projectionType == projectionType &&
|
||||||
other.state == state &&
|
other.state == state &&
|
||||||
other.timeZone == timeZone;
|
other.timeZone == timeZone;
|
||||||
|
@ -136,7 +148,9 @@ class ExifEntity {
|
||||||
// ignore: unnecessary_parenthesis
|
// ignore: unnecessary_parenthesis
|
||||||
(asset == null ? 0 : asset!.hashCode) +
|
(asset == null ? 0 : asset!.hashCode) +
|
||||||
(assetId.hashCode) +
|
(assetId.hashCode) +
|
||||||
|
(bitsPerSample == null ? 0 : bitsPerSample!.hashCode) +
|
||||||
(city == null ? 0 : city!.hashCode) +
|
(city == null ? 0 : city!.hashCode) +
|
||||||
|
(colorspace == null ? 0 : colorspace!.hashCode) +
|
||||||
(country == null ? 0 : country!.hashCode) +
|
(country == null ? 0 : country!.hashCode) +
|
||||||
(dateTimeOriginal == null ? 0 : dateTimeOriginal!.hashCode) +
|
(dateTimeOriginal == null ? 0 : dateTimeOriginal!.hashCode) +
|
||||||
(description.hashCode) +
|
(description.hashCode) +
|
||||||
|
@ -157,12 +171,13 @@ class ExifEntity {
|
||||||
(model == null ? 0 : model!.hashCode) +
|
(model == null ? 0 : model!.hashCode) +
|
||||||
(modifyDate == null ? 0 : modifyDate!.hashCode) +
|
(modifyDate == null ? 0 : modifyDate!.hashCode) +
|
||||||
(orientation == null ? 0 : orientation!.hashCode) +
|
(orientation == null ? 0 : orientation!.hashCode) +
|
||||||
|
(profileDescription == null ? 0 : profileDescription!.hashCode) +
|
||||||
(projectionType == null ? 0 : projectionType!.hashCode) +
|
(projectionType == null ? 0 : projectionType!.hashCode) +
|
||||||
(state == null ? 0 : state!.hashCode) +
|
(state == null ? 0 : state!.hashCode) +
|
||||||
(timeZone == null ? 0 : timeZone!.hashCode);
|
(timeZone == null ? 0 : timeZone!.hashCode);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => 'ExifEntity[asset=$asset, assetId=$assetId, city=$city, country=$country, dateTimeOriginal=$dateTimeOriginal, description=$description, exifImageHeight=$exifImageHeight, exifImageWidth=$exifImageWidth, exifTextSearchableColumn=$exifTextSearchableColumn, exposureTime=$exposureTime, fNumber=$fNumber, fileSizeInByte=$fileSizeInByte, focalLength=$focalLength, fps=$fps, iso=$iso, latitude=$latitude, lensModel=$lensModel, livePhotoCID=$livePhotoCID, longitude=$longitude, make=$make, model=$model, modifyDate=$modifyDate, orientation=$orientation, projectionType=$projectionType, state=$state, timeZone=$timeZone]';
|
String toString() => 'ExifEntity[asset=$asset, assetId=$assetId, bitsPerSample=$bitsPerSample, city=$city, colorspace=$colorspace, country=$country, dateTimeOriginal=$dateTimeOriginal, description=$description, exifImageHeight=$exifImageHeight, exifImageWidth=$exifImageWidth, exifTextSearchableColumn=$exifTextSearchableColumn, exposureTime=$exposureTime, fNumber=$fNumber, fileSizeInByte=$fileSizeInByte, focalLength=$focalLength, fps=$fps, iso=$iso, latitude=$latitude, lensModel=$lensModel, livePhotoCID=$livePhotoCID, longitude=$longitude, make=$make, model=$model, modifyDate=$modifyDate, orientation=$orientation, profileDescription=$profileDescription, projectionType=$projectionType, state=$state, timeZone=$timeZone]';
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final json = <String, dynamic>{};
|
final json = <String, dynamic>{};
|
||||||
|
@ -172,11 +187,21 @@ class ExifEntity {
|
||||||
// json[r'asset'] = null;
|
// json[r'asset'] = null;
|
||||||
}
|
}
|
||||||
json[r'assetId'] = this.assetId;
|
json[r'assetId'] = this.assetId;
|
||||||
|
if (this.bitsPerSample != null) {
|
||||||
|
json[r'bitsPerSample'] = this.bitsPerSample;
|
||||||
|
} else {
|
||||||
|
// json[r'bitsPerSample'] = null;
|
||||||
|
}
|
||||||
if (this.city != null) {
|
if (this.city != null) {
|
||||||
json[r'city'] = this.city;
|
json[r'city'] = this.city;
|
||||||
} else {
|
} else {
|
||||||
// json[r'city'] = null;
|
// json[r'city'] = null;
|
||||||
}
|
}
|
||||||
|
if (this.colorspace != null) {
|
||||||
|
json[r'colorspace'] = this.colorspace;
|
||||||
|
} else {
|
||||||
|
// json[r'colorspace'] = null;
|
||||||
|
}
|
||||||
if (this.country != null) {
|
if (this.country != null) {
|
||||||
json[r'country'] = this.country;
|
json[r'country'] = this.country;
|
||||||
} else {
|
} else {
|
||||||
|
@ -269,6 +294,11 @@ class ExifEntity {
|
||||||
} else {
|
} else {
|
||||||
// json[r'orientation'] = null;
|
// json[r'orientation'] = null;
|
||||||
}
|
}
|
||||||
|
if (this.profileDescription != null) {
|
||||||
|
json[r'profileDescription'] = this.profileDescription;
|
||||||
|
} else {
|
||||||
|
// json[r'profileDescription'] = null;
|
||||||
|
}
|
||||||
if (this.projectionType != null) {
|
if (this.projectionType != null) {
|
||||||
json[r'projectionType'] = this.projectionType;
|
json[r'projectionType'] = this.projectionType;
|
||||||
} else {
|
} else {
|
||||||
|
@ -297,7 +327,11 @@ class ExifEntity {
|
||||||
return ExifEntity(
|
return ExifEntity(
|
||||||
asset: AssetEntity.fromJson(json[r'asset']),
|
asset: AssetEntity.fromJson(json[r'asset']),
|
||||||
assetId: mapValueOfType<String>(json, r'assetId')!,
|
assetId: mapValueOfType<String>(json, r'assetId')!,
|
||||||
|
bitsPerSample: json[r'bitsPerSample'] == null
|
||||||
|
? null
|
||||||
|
: num.parse(json[r'bitsPerSample'].toString()),
|
||||||
city: mapValueOfType<String>(json, r'city'),
|
city: mapValueOfType<String>(json, r'city'),
|
||||||
|
colorspace: mapValueOfType<String>(json, r'colorspace'),
|
||||||
country: mapValueOfType<String>(json, r'country'),
|
country: mapValueOfType<String>(json, r'country'),
|
||||||
dateTimeOriginal: mapDateTime(json, r'dateTimeOriginal', ''),
|
dateTimeOriginal: mapDateTime(json, r'dateTimeOriginal', ''),
|
||||||
description: mapValueOfType<String>(json, r'description')!,
|
description: mapValueOfType<String>(json, r'description')!,
|
||||||
|
@ -336,6 +370,7 @@ class ExifEntity {
|
||||||
model: mapValueOfType<String>(json, r'model'),
|
model: mapValueOfType<String>(json, r'model'),
|
||||||
modifyDate: mapDateTime(json, r'modifyDate', ''),
|
modifyDate: mapDateTime(json, r'modifyDate', ''),
|
||||||
orientation: mapValueOfType<String>(json, r'orientation'),
|
orientation: mapValueOfType<String>(json, r'orientation'),
|
||||||
|
profileDescription: mapValueOfType<String>(json, r'profileDescription'),
|
||||||
projectionType: mapValueOfType<String>(json, r'projectionType'),
|
projectionType: mapValueOfType<String>(json, r'projectionType'),
|
||||||
state: mapValueOfType<String>(json, r'state'),
|
state: mapValueOfType<String>(json, r'state'),
|
||||||
timeZone: mapValueOfType<String>(json, r'timeZone'),
|
timeZone: mapValueOfType<String>(json, r'timeZone'),
|
||||||
|
@ -387,7 +422,9 @@ class ExifEntity {
|
||||||
/// The list of required keys that must be present in a JSON.
|
/// The list of required keys that must be present in a JSON.
|
||||||
static const requiredKeys = <String>{
|
static const requiredKeys = <String>{
|
||||||
'assetId',
|
'assetId',
|
||||||
|
'bitsPerSample',
|
||||||
'city',
|
'city',
|
||||||
|
'colorspace',
|
||||||
'country',
|
'country',
|
||||||
'dateTimeOriginal',
|
'dateTimeOriginal',
|
||||||
'description',
|
'description',
|
||||||
|
@ -407,6 +444,7 @@ class ExifEntity {
|
||||||
'model',
|
'model',
|
||||||
'modifyDate',
|
'modifyDate',
|
||||||
'orientation',
|
'orientation',
|
||||||
|
'profileDescription',
|
||||||
'projectionType',
|
'projectionType',
|
||||||
'state',
|
'state',
|
||||||
'timeZone',
|
'timeZone',
|
||||||
|
|
15
mobile/openapi/test/exif_entity_test.dart
generated
15
mobile/openapi/test/exif_entity_test.dart
generated
|
@ -26,11 +26,21 @@ void main() {
|
||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// num bitsPerSample
|
||||||
|
test('to test the property `bitsPerSample`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
// String city
|
// String city
|
||||||
test('to test the property `city`', () async {
|
test('to test the property `city`', () async {
|
||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// String colorspace
|
||||||
|
test('to test the property `colorspace`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
// String country
|
// String country
|
||||||
test('to test the property `country`', () async {
|
test('to test the property `country`', () async {
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -134,6 +144,11 @@ void main() {
|
||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// String profileDescription
|
||||||
|
test('to test the property `profileDescription`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
// String projectionType
|
// String projectionType
|
||||||
test('to test the property `projectionType`', () async {
|
test('to test the property `projectionType`', () async {
|
||||||
// TODO
|
// TODO
|
||||||
|
|
|
@ -6804,10 +6804,18 @@
|
||||||
"assetId": {
|
"assetId": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"bitsPerSample": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
"city": {
|
"city": {
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"colorspace": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"country": {
|
"country": {
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -6891,6 +6899,10 @@
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"profileDescription": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"projectionType": {
|
"projectionType": {
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -6928,6 +6940,9 @@
|
||||||
"focalLength",
|
"focalLength",
|
||||||
"iso",
|
"iso",
|
||||||
"exposureTime",
|
"exposureTime",
|
||||||
|
"profileDescription",
|
||||||
|
"colorspace",
|
||||||
|
"bitsPerSample",
|
||||||
"exifTextSearchableColumn"
|
"exifTextSearchableColumn"
|
||||||
],
|
],
|
||||||
"type": "object"
|
"type": "object"
|
||||||
|
|
|
@ -198,7 +198,7 @@ export class PersonService {
|
||||||
|
|
||||||
async getFaceEntity(authUser: AuthUserDto, personId: string, assetId: string): Promise<AssetFaceEntity> {
|
async getFaceEntity(authUser: AuthUserDto, personId: string, assetId: string): Promise<AssetFaceEntity> {
|
||||||
await this.access.requirePermission(authUser, Permission.PERSON_READ, personId);
|
await this.access.requirePermission(authUser, Permission.PERSON_READ, personId);
|
||||||
const face = await this.repository.getFaceById({ personId, assetId });
|
const [face] = await this.repository.getFacesByIds([{ personId, assetId }]);
|
||||||
if (!face) {
|
if (!face) {
|
||||||
throw new BadRequestException('Invalid assetId for feature face');
|
throw new BadRequestException('Invalid assetId for feature face');
|
||||||
}
|
}
|
||||||
|
@ -217,7 +217,7 @@ export class PersonService {
|
||||||
id: newPerson.id,
|
id: newPerson.id,
|
||||||
faceAssetId: data.assetId,
|
faceAssetId: data.assetId,
|
||||||
});
|
});
|
||||||
const face = await this.repository.getFaceById({ personId: newPerson.id, assetId: data.assetId });
|
const [face] = await this.repository.getFacesByIds([{ personId: newPerson.id, assetId: data.assetId }]);
|
||||||
const oldPerson = await this.findOrFail(data.personId);
|
const oldPerson = await this.findOrFail(data.personId);
|
||||||
if (oldPerson.faceAssetId === face?.assetId) {
|
if (oldPerson.faceAssetId === face?.assetId) {
|
||||||
//TODO: create a new feature photo
|
//TODO: create a new feature photo
|
||||||
|
@ -227,18 +227,9 @@ export class PersonService {
|
||||||
}
|
}
|
||||||
if (!hasGeneratedFaceThumbnail) {
|
if (!hasGeneratedFaceThumbnail) {
|
||||||
await this.jobRepository.queue({
|
await this.jobRepository.queue({
|
||||||
name: JobName.GENERATE_FACE_THUMBNAIL,
|
name: JobName.GENERATE_PERSON_THUMBNAIL,
|
||||||
data: {
|
data: {
|
||||||
personId: newPerson.id,
|
id: newPerson.id,
|
||||||
assetId: data.assetId,
|
|
||||||
boundingBox: {
|
|
||||||
x1: face.boundingBoxX1,
|
|
||||||
x2: face.boundingBoxX2,
|
|
||||||
y1: face.boundingBoxY1,
|
|
||||||
y2: face.boundingBoxY2,
|
|
||||||
},
|
|
||||||
imageHeight: face.imageHeight,
|
|
||||||
imageWidth: face.imageWidth,
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
hasGeneratedFaceThumbnail = true;
|
hasGeneratedFaceThumbnail = true;
|
||||||
|
@ -258,7 +249,7 @@ export class PersonService {
|
||||||
|
|
||||||
for (const data of dto.data) {
|
for (const data of dto.data) {
|
||||||
try {
|
try {
|
||||||
const face = await this.repository.getFaceById({ personId: data.personId, assetId: data.assetId });
|
const [face] = await this.repository.getFacesByIds([{ personId: data.personId, assetId: data.assetId }]);
|
||||||
const oldPerson = await this.findOrFail(data.personId);
|
const oldPerson = await this.findOrFail(data.personId);
|
||||||
if (oldPerson.faceAssetId === face?.assetId) {
|
if (oldPerson.faceAssetId === face?.assetId) {
|
||||||
//TODO: create a new feature photo
|
//TODO: create a new feature photo
|
||||||
|
@ -271,6 +262,7 @@ export class PersonService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
async handleRecognizeFaces({ id }: IEntityJob) {
|
async handleRecognizeFaces({ id }: IEntityJob) {
|
||||||
const { machineLearning } = await this.configCore.getConfig();
|
const { machineLearning } = await this.configCore.getConfig();
|
||||||
if (!machineLearning.enabled || !machineLearning.facialRecognition.enabled) {
|
if (!machineLearning.enabled || !machineLearning.facialRecognition.enabled) {
|
||||||
|
|
175
web/src/api/open-api/api.ts
generated
175
web/src/api/open-api/api.ts
generated
|
@ -4,7 +4,7 @@
|
||||||
* Immich
|
* Immich
|
||||||
* Immich API
|
* Immich API
|
||||||
*
|
*
|
||||||
* The version of the OpenAPI document: 1.78.1
|
* The version of the OpenAPI document: 1.81.0
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||||
|
@ -392,6 +392,12 @@ export interface AllJobStatusResponseDto {
|
||||||
* @memberof AllJobStatusResponseDto
|
* @memberof AllJobStatusResponseDto
|
||||||
*/
|
*/
|
||||||
'metadataExtraction': JobStatusDto;
|
'metadataExtraction': JobStatusDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobStatusDto}
|
||||||
|
* @memberof AllJobStatusResponseDto
|
||||||
|
*/
|
||||||
|
'migration': JobStatusDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobStatusDto}
|
* @type {JobStatusDto}
|
||||||
|
@ -1466,6 +1472,22 @@ export interface CheckExistingAssetsResponseDto {
|
||||||
*/
|
*/
|
||||||
'existingIds': Array<string>;
|
'existingIds': Array<string>;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const CitiesFile = {
|
||||||
|
Cities15000: 'cities15000',
|
||||||
|
Cities5000: 'cities5000',
|
||||||
|
Cities1000: 'cities1000',
|
||||||
|
Cities500: 'cities500'
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type CitiesFile = typeof CitiesFile[keyof typeof CitiesFile];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
|
@ -1895,12 +1917,24 @@ export interface ExifEntity {
|
||||||
* @memberof ExifEntity
|
* @memberof ExifEntity
|
||||||
*/
|
*/
|
||||||
'assetId': string;
|
'assetId': string;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof ExifEntity
|
||||||
|
*/
|
||||||
|
'bitsPerSample': number | null;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof ExifEntity
|
* @memberof ExifEntity
|
||||||
*/
|
*/
|
||||||
'city': string | null;
|
'city': string | null;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof ExifEntity
|
||||||
|
*/
|
||||||
|
'colorspace': string | null;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
|
@ -2021,6 +2055,12 @@ export interface ExifEntity {
|
||||||
* @memberof ExifEntity
|
* @memberof ExifEntity
|
||||||
*/
|
*/
|
||||||
'orientation': string | null;
|
'orientation': string | null;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof ExifEntity
|
||||||
|
*/
|
||||||
|
'profileDescription': string | null;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
|
@ -2359,6 +2399,7 @@ export const JobName = {
|
||||||
ClipEncoding: 'clipEncoding',
|
ClipEncoding: 'clipEncoding',
|
||||||
BackgroundTask: 'backgroundTask',
|
BackgroundTask: 'backgroundTask',
|
||||||
StorageTemplateMigration: 'storageTemplateMigration',
|
StorageTemplateMigration: 'storageTemplateMigration',
|
||||||
|
Migration: 'migration',
|
||||||
Search: 'search',
|
Search: 'search',
|
||||||
Sidecar: 'sidecar',
|
Sidecar: 'sidecar',
|
||||||
Library: 'library'
|
Library: 'library'
|
||||||
|
@ -3395,6 +3436,12 @@ export interface ServerFeaturesDto {
|
||||||
* @memberof ServerFeaturesDto
|
* @memberof ServerFeaturesDto
|
||||||
*/
|
*/
|
||||||
'passwordLogin': boolean;
|
'passwordLogin': boolean;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof ServerFeaturesDto
|
||||||
|
*/
|
||||||
|
'reverseGeocoding': boolean;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
|
@ -3974,6 +4021,12 @@ export interface SystemConfigDto {
|
||||||
* @memberof SystemConfigDto
|
* @memberof SystemConfigDto
|
||||||
*/
|
*/
|
||||||
'passwordLogin': SystemConfigPasswordLoginDto;
|
'passwordLogin': SystemConfigPasswordLoginDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {SystemConfigReverseGeocodingDto}
|
||||||
|
* @memberof SystemConfigDto
|
||||||
|
*/
|
||||||
|
'reverseGeocoding': SystemConfigReverseGeocodingDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {SystemConfigStorageTemplateDto}
|
* @type {SystemConfigStorageTemplateDto}
|
||||||
|
@ -4128,6 +4181,12 @@ export interface SystemConfigJobDto {
|
||||||
* @memberof SystemConfigJobDto
|
* @memberof SystemConfigJobDto
|
||||||
*/
|
*/
|
||||||
'metadataExtraction': JobSettingsDto;
|
'metadataExtraction': JobSettingsDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobSettingsDto}
|
||||||
|
* @memberof SystemConfigJobDto
|
||||||
|
*/
|
||||||
|
'migration': JobSettingsDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobSettingsDto}
|
* @type {JobSettingsDto}
|
||||||
|
@ -4313,6 +4372,27 @@ export interface SystemConfigPasswordLoginDto {
|
||||||
*/
|
*/
|
||||||
'enabled': boolean;
|
'enabled': boolean;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface SystemConfigReverseGeocodingDto
|
||||||
|
*/
|
||||||
|
export interface SystemConfigReverseGeocodingDto {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {CitiesFile}
|
||||||
|
* @memberof SystemConfigReverseGeocodingDto
|
||||||
|
*/
|
||||||
|
'citiesFileOverride': CitiesFile;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof SystemConfigReverseGeocodingDto
|
||||||
|
*/
|
||||||
|
'enabled': boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
|
@ -4368,6 +4448,12 @@ export interface SystemConfigTemplateStorageOptionDto {
|
||||||
* @memberof SystemConfigTemplateStorageOptionDto
|
* @memberof SystemConfigTemplateStorageOptionDto
|
||||||
*/
|
*/
|
||||||
'secondOptions': Array<string>;
|
'secondOptions': Array<string>;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {Array<string>}
|
||||||
|
* @memberof SystemConfigTemplateStorageOptionDto
|
||||||
|
*/
|
||||||
|
'weekOptions': Array<string>;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {Array<string>}
|
* @type {Array<string>}
|
||||||
|
@ -7358,6 +7444,49 @@ export const AssetApiAxiosParamCreator = function (configuration?: Configuration
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||||
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||||
|
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||||
|
|
||||||
|
return {
|
||||||
|
url: toPathString(localVarUrlObj),
|
||||||
|
options: localVarRequestOptions,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {number} [count]
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
*/
|
||||||
|
getRandom: async (count?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||||
|
const localVarPath = `/asset/random`;
|
||||||
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||||
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
||||||
|
let baseOptions;
|
||||||
|
if (configuration) {
|
||||||
|
baseOptions = configuration.baseOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
|
||||||
|
const localVarHeaderParameter = {} as any;
|
||||||
|
const localVarQueryParameter = {} as any;
|
||||||
|
|
||||||
|
// authentication cookie required
|
||||||
|
|
||||||
|
// authentication api_key required
|
||||||
|
await setApiKeyToObject(localVarHeaderParameter, "x-api-key", configuration)
|
||||||
|
|
||||||
|
// authentication bearer required
|
||||||
|
// http bearer authentication required
|
||||||
|
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
||||||
|
|
||||||
|
if (count !== undefined) {
|
||||||
|
localVarQueryParameter['count'] = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||||
|
@ -8098,6 +8227,16 @@ export const AssetApiFp = function(configuration?: Configuration) {
|
||||||
const localVarAxiosArgs = await localVarAxiosParamCreator.getMemoryLane(timestamp, options);
|
const localVarAxiosArgs = await localVarAxiosParamCreator.getMemoryLane(timestamp, options);
|
||||||
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
|
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {number} [count]
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
*/
|
||||||
|
async getRandom(count?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AssetResponseDto>>> {
|
||||||
|
const localVarAxiosArgs = await localVarAxiosParamCreator.getRandom(count, options);
|
||||||
|
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {TimeBucketSize} size
|
* @param {TimeBucketSize} size
|
||||||
|
@ -8373,6 +8512,15 @@ export const AssetApiFactory = function (configuration?: Configuration, basePath
|
||||||
getMemoryLane(requestParameters: AssetApiGetMemoryLaneRequest, options?: AxiosRequestConfig): AxiosPromise<Array<MemoryLaneResponseDto>> {
|
getMemoryLane(requestParameters: AssetApiGetMemoryLaneRequest, options?: AxiosRequestConfig): AxiosPromise<Array<MemoryLaneResponseDto>> {
|
||||||
return localVarFp.getMemoryLane(requestParameters.timestamp, options).then((request) => request(axios, basePath));
|
return localVarFp.getMemoryLane(requestParameters.timestamp, options).then((request) => request(axios, basePath));
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {AssetApiGetRandomRequest} requestParameters Request parameters.
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
*/
|
||||||
|
getRandom(requestParameters: AssetApiGetRandomRequest = {}, options?: AxiosRequestConfig): AxiosPromise<Array<AssetResponseDto>> {
|
||||||
|
return localVarFp.getRandom(requestParameters.count, options).then((request) => request(axios, basePath));
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
||||||
|
@ -8807,6 +8955,20 @@ export interface AssetApiGetMemoryLaneRequest {
|
||||||
readonly timestamp: string
|
readonly timestamp: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request parameters for getRandom operation in AssetApi.
|
||||||
|
* @export
|
||||||
|
* @interface AssetApiGetRandomRequest
|
||||||
|
*/
|
||||||
|
export interface AssetApiGetRandomRequest {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof AssetApiGetRandom
|
||||||
|
*/
|
||||||
|
readonly count?: number
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request parameters for getTimeBuckets operation in AssetApi.
|
* Request parameters for getTimeBuckets operation in AssetApi.
|
||||||
* @export
|
* @export
|
||||||
|
@ -9299,6 +9461,17 @@ export class AssetApi extends BaseAPI {
|
||||||
return AssetApiFp(this.configuration).getMemoryLane(requestParameters.timestamp, options).then((request) => request(this.axios, this.basePath));
|
return AssetApiFp(this.configuration).getMemoryLane(requestParameters.timestamp, options).then((request) => request(this.axios, this.basePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {AssetApiGetRandomRequest} requestParameters Request parameters.
|
||||||
|
* @param {*} [options] Override http request option.
|
||||||
|
* @throws {RequiredError}
|
||||||
|
* @memberof AssetApi
|
||||||
|
*/
|
||||||
|
public getRandom(requestParameters: AssetApiGetRandomRequest = {}, options?: AxiosRequestConfig) {
|
||||||
|
return AssetApiFp(this.configuration).getRandom(requestParameters.count, options).then((request) => request(this.axios, this.basePath));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
* @param {AssetApiGetTimeBucketsRequest} requestParameters Request parameters.
|
||||||
|
|
Loading…
Reference in a new issue