浏览代码

fix(server) added TagResponseDto for TagController (#1065)

* fix(server) added TagResponseDto for TagController

* Added userId to DTO
Alex 2 年之前
父节点
当前提交
f91bdc2785

+ 0 - 10
mobile/openapi/.openapi-generator/FILES

@@ -14,7 +14,6 @@ doc/AssetApi.md
 doc/AssetCountByTimeBucket.md
 doc/AssetCountByTimeBucket.md
 doc/AssetCountByTimeBucketResponseDto.md
 doc/AssetCountByTimeBucketResponseDto.md
 doc/AssetCountByUserIdResponseDto.md
 doc/AssetCountByUserIdResponseDto.md
-doc/AssetEntity.md
 doc/AssetFileUploadResponseDto.md
 doc/AssetFileUploadResponseDto.md
 doc/AssetResponseDto.md
 doc/AssetResponseDto.md
 doc/AssetTypeEnum.md
 doc/AssetTypeEnum.md
@@ -36,7 +35,6 @@ doc/DeleteAssetStatus.md
 doc/DeviceInfoApi.md
 doc/DeviceInfoApi.md
 doc/DeviceInfoResponseDto.md
 doc/DeviceInfoResponseDto.md
 doc/DeviceTypeEnum.md
 doc/DeviceTypeEnum.md
-doc/ExifEntity.md
 doc/ExifResponseDto.md
 doc/ExifResponseDto.md
 doc/GetAssetByTimeBucketDto.md
 doc/GetAssetByTimeBucketDto.md
 doc/GetAssetCountByTimeBucketDto.md
 doc/GetAssetCountByTimeBucketDto.md
@@ -61,14 +59,12 @@ doc/ServerPingResponse.md
 doc/ServerStatsResponseDto.md
 doc/ServerStatsResponseDto.md
 doc/ServerVersionReponseDto.md
 doc/ServerVersionReponseDto.md
 doc/SignUpDto.md
 doc/SignUpDto.md
-doc/SmartInfoEntity.md
 doc/SmartInfoResponseDto.md
 doc/SmartInfoResponseDto.md
 doc/SystemConfigApi.md
 doc/SystemConfigApi.md
 doc/SystemConfigKey.md
 doc/SystemConfigKey.md
 doc/SystemConfigResponseDto.md
 doc/SystemConfigResponseDto.md
 doc/SystemConfigResponseItem.md
 doc/SystemConfigResponseItem.md
 doc/TagApi.md
 doc/TagApi.md
-doc/TagEntity.md
 doc/TagResponseDto.md
 doc/TagResponseDto.md
 doc/TagTypeEnum.md
 doc/TagTypeEnum.md
 doc/ThumbnailFormat.md
 doc/ThumbnailFormat.md
@@ -81,7 +77,6 @@ doc/UpdateUserDto.md
 doc/UsageByUserDto.md
 doc/UsageByUserDto.md
 doc/UserApi.md
 doc/UserApi.md
 doc/UserCountResponseDto.md
 doc/UserCountResponseDto.md
-doc/UserEntity.md
 doc/UserResponseDto.md
 doc/UserResponseDto.md
 doc/ValidateAccessTokenResponseDto.md
 doc/ValidateAccessTokenResponseDto.md
 git_push.sh
 git_push.sh
@@ -114,7 +109,6 @@ lib/model/all_job_status_response_dto.dart
 lib/model/asset_count_by_time_bucket.dart
 lib/model/asset_count_by_time_bucket.dart
 lib/model/asset_count_by_time_bucket_response_dto.dart
 lib/model/asset_count_by_time_bucket_response_dto.dart
 lib/model/asset_count_by_user_id_response_dto.dart
 lib/model/asset_count_by_user_id_response_dto.dart
-lib/model/asset_entity.dart
 lib/model/asset_file_upload_response_dto.dart
 lib/model/asset_file_upload_response_dto.dart
 lib/model/asset_response_dto.dart
 lib/model/asset_response_dto.dart
 lib/model/asset_type_enum.dart
 lib/model/asset_type_enum.dart
@@ -134,7 +128,6 @@ lib/model/delete_asset_response_dto.dart
 lib/model/delete_asset_status.dart
 lib/model/delete_asset_status.dart
 lib/model/device_info_response_dto.dart
 lib/model/device_info_response_dto.dart
 lib/model/device_type_enum.dart
 lib/model/device_type_enum.dart
-lib/model/exif_entity.dart
 lib/model/exif_response_dto.dart
 lib/model/exif_response_dto.dart
 lib/model/get_asset_by_time_bucket_dto.dart
 lib/model/get_asset_by_time_bucket_dto.dart
 lib/model/get_asset_count_by_time_bucket_dto.dart
 lib/model/get_asset_count_by_time_bucket_dto.dart
@@ -156,12 +149,10 @@ lib/model/server_ping_response.dart
 lib/model/server_stats_response_dto.dart
 lib/model/server_stats_response_dto.dart
 lib/model/server_version_reponse_dto.dart
 lib/model/server_version_reponse_dto.dart
 lib/model/sign_up_dto.dart
 lib/model/sign_up_dto.dart
-lib/model/smart_info_entity.dart
 lib/model/smart_info_response_dto.dart
 lib/model/smart_info_response_dto.dart
 lib/model/system_config_key.dart
 lib/model/system_config_key.dart
 lib/model/system_config_response_dto.dart
 lib/model/system_config_response_dto.dart
 lib/model/system_config_response_item.dart
 lib/model/system_config_response_item.dart
-lib/model/tag_entity.dart
 lib/model/tag_response_dto.dart
 lib/model/tag_response_dto.dart
 lib/model/tag_type_enum.dart
 lib/model/tag_type_enum.dart
 lib/model/thumbnail_format.dart
 lib/model/thumbnail_format.dart
@@ -173,7 +164,6 @@ lib/model/update_tag_dto.dart
 lib/model/update_user_dto.dart
 lib/model/update_user_dto.dart
 lib/model/usage_by_user_dto.dart
 lib/model/usage_by_user_dto.dart
 lib/model/user_count_response_dto.dart
 lib/model/user_count_response_dto.dart
-lib/model/user_entity.dart
 lib/model/user_response_dto.dart
 lib/model/user_response_dto.dart
 lib/model/validate_access_token_response_dto.dart
 lib/model/validate_access_token_response_dto.dart
 pubspec.yaml
 pubspec.yaml

+ 0 - 5
mobile/openapi/README.md

@@ -141,7 +141,6 @@ Class | Method | HTTP request | Description
  - [AssetCountByTimeBucket](doc//AssetCountByTimeBucket.md)
  - [AssetCountByTimeBucket](doc//AssetCountByTimeBucket.md)
  - [AssetCountByTimeBucketResponseDto](doc//AssetCountByTimeBucketResponseDto.md)
  - [AssetCountByTimeBucketResponseDto](doc//AssetCountByTimeBucketResponseDto.md)
  - [AssetCountByUserIdResponseDto](doc//AssetCountByUserIdResponseDto.md)
  - [AssetCountByUserIdResponseDto](doc//AssetCountByUserIdResponseDto.md)
- - [AssetEntity](doc//AssetEntity.md)
  - [AssetFileUploadResponseDto](doc//AssetFileUploadResponseDto.md)
  - [AssetFileUploadResponseDto](doc//AssetFileUploadResponseDto.md)
  - [AssetResponseDto](doc//AssetResponseDto.md)
  - [AssetResponseDto](doc//AssetResponseDto.md)
  - [AssetTypeEnum](doc//AssetTypeEnum.md)
  - [AssetTypeEnum](doc//AssetTypeEnum.md)
@@ -161,7 +160,6 @@ Class | Method | HTTP request | Description
  - [DeleteAssetStatus](doc//DeleteAssetStatus.md)
  - [DeleteAssetStatus](doc//DeleteAssetStatus.md)
  - [DeviceInfoResponseDto](doc//DeviceInfoResponseDto.md)
  - [DeviceInfoResponseDto](doc//DeviceInfoResponseDto.md)
  - [DeviceTypeEnum](doc//DeviceTypeEnum.md)
  - [DeviceTypeEnum](doc//DeviceTypeEnum.md)
- - [ExifEntity](doc//ExifEntity.md)
  - [ExifResponseDto](doc//ExifResponseDto.md)
  - [ExifResponseDto](doc//ExifResponseDto.md)
  - [GetAssetByTimeBucketDto](doc//GetAssetByTimeBucketDto.md)
  - [GetAssetByTimeBucketDto](doc//GetAssetByTimeBucketDto.md)
  - [GetAssetCountByTimeBucketDto](doc//GetAssetCountByTimeBucketDto.md)
  - [GetAssetCountByTimeBucketDto](doc//GetAssetCountByTimeBucketDto.md)
@@ -183,12 +181,10 @@ Class | Method | HTTP request | Description
  - [ServerStatsResponseDto](doc//ServerStatsResponseDto.md)
  - [ServerStatsResponseDto](doc//ServerStatsResponseDto.md)
  - [ServerVersionReponseDto](doc//ServerVersionReponseDto.md)
  - [ServerVersionReponseDto](doc//ServerVersionReponseDto.md)
  - [SignUpDto](doc//SignUpDto.md)
  - [SignUpDto](doc//SignUpDto.md)
- - [SmartInfoEntity](doc//SmartInfoEntity.md)
  - [SmartInfoResponseDto](doc//SmartInfoResponseDto.md)
  - [SmartInfoResponseDto](doc//SmartInfoResponseDto.md)
  - [SystemConfigKey](doc//SystemConfigKey.md)
  - [SystemConfigKey](doc//SystemConfigKey.md)
  - [SystemConfigResponseDto](doc//SystemConfigResponseDto.md)
  - [SystemConfigResponseDto](doc//SystemConfigResponseDto.md)
  - [SystemConfigResponseItem](doc//SystemConfigResponseItem.md)
  - [SystemConfigResponseItem](doc//SystemConfigResponseItem.md)
- - [TagEntity](doc//TagEntity.md)
  - [TagResponseDto](doc//TagResponseDto.md)
  - [TagResponseDto](doc//TagResponseDto.md)
  - [TagTypeEnum](doc//TagTypeEnum.md)
  - [TagTypeEnum](doc//TagTypeEnum.md)
  - [ThumbnailFormat](doc//ThumbnailFormat.md)
  - [ThumbnailFormat](doc//ThumbnailFormat.md)
@@ -200,7 +196,6 @@ Class | Method | HTTP request | Description
  - [UpdateUserDto](doc//UpdateUserDto.md)
  - [UpdateUserDto](doc//UpdateUserDto.md)
  - [UsageByUserDto](doc//UsageByUserDto.md)
  - [UsageByUserDto](doc//UsageByUserDto.md)
  - [UserCountResponseDto](doc//UserCountResponseDto.md)
  - [UserCountResponseDto](doc//UserCountResponseDto.md)
- - [UserEntity](doc//UserEntity.md)
  - [UserResponseDto](doc//UserResponseDto.md)
  - [UserResponseDto](doc//UserResponseDto.md)
  - [ValidateAccessTokenResponseDto](doc//ValidateAccessTokenResponseDto.md)
  - [ValidateAccessTokenResponseDto](doc//ValidateAccessTokenResponseDto.md)
 
 

+ 12 - 13
mobile/openapi/doc/TagApi.md

@@ -17,7 +17,7 @@ Method | HTTP request | Description
 
 
 
 
 # **create**
 # **create**
-> TagEntity create(createTagDto)
+> TagResponseDto create(createTagDto)
 
 
 
 
 
 
@@ -44,7 +44,7 @@ Name | Type | Description  | Notes
 
 
 ### Return type
 ### Return type
 
 
-[**TagEntity**](TagEntity.md)
+[**TagResponseDto**](TagResponseDto.md)
 
 
 ### Authorization
 ### Authorization
 
 
@@ -58,7 +58,7 @@ No authorization required
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 
 
 # **delete**
 # **delete**
-> TagEntity delete(id)
+> delete(id)
 
 
 
 
 
 
@@ -70,8 +70,7 @@ final api_instance = TagApi();
 final id = id_example; // String | 
 final id = id_example; // String | 
 
 
 try {
 try {
-    final result = api_instance.delete(id);
-    print(result);
+    api_instance.delete(id);
 } catch (e) {
 } catch (e) {
     print('Exception when calling TagApi->delete: $e\n');
     print('Exception when calling TagApi->delete: $e\n');
 }
 }
@@ -85,7 +84,7 @@ Name | Type | Description  | Notes
 
 
 ### Return type
 ### Return type
 
 
-[**TagEntity**](TagEntity.md)
+void (empty response body)
 
 
 ### Authorization
 ### Authorization
 
 
@@ -94,12 +93,12 @@ No authorization required
 ### HTTP request headers
 ### HTTP request headers
 
 
  - **Content-Type**: Not defined
  - **Content-Type**: Not defined
- - **Accept**: application/json
+ - **Accept**: Not defined
 
 
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 
 
 # **findAll**
 # **findAll**
-> List<TagEntity> findAll()
+> List<TagResponseDto> findAll()
 
 
 
 
 
 
@@ -122,7 +121,7 @@ This endpoint does not need any parameter.
 
 
 ### Return type
 ### Return type
 
 
-[**List<TagEntity>**](TagEntity.md)
+[**List<TagResponseDto>**](TagResponseDto.md)
 
 
 ### Authorization
 ### Authorization
 
 
@@ -136,7 +135,7 @@ No authorization required
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 
 
 # **findOne**
 # **findOne**
-> TagEntity findOne(id)
+> TagResponseDto findOne(id)
 
 
 
 
 
 
@@ -163,7 +162,7 @@ Name | Type | Description  | Notes
 
 
 ### Return type
 ### Return type
 
 
-[**TagEntity**](TagEntity.md)
+[**TagResponseDto**](TagResponseDto.md)
 
 
 ### Authorization
 ### Authorization
 
 
@@ -177,7 +176,7 @@ No authorization required
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
 
 
 # **update**
 # **update**
-> Object update(id, updateTagDto)
+> TagResponseDto update(id, updateTagDto)
 
 
 
 
 
 
@@ -206,7 +205,7 @@ Name | Type | Description  | Notes
 
 
 ### Return type
 ### Return type
 
 
-[**Object**](Object.md)
+[**TagResponseDto**](TagResponseDto.md)
 
 
 ### Authorization
 ### Authorization
 
 

+ 2 - 0
mobile/openapi/doc/TagResponseDto.md

@@ -11,6 +11,8 @@ Name | Type | Description | Notes
 **id** | **String** |  | 
 **id** | **String** |  | 
 **type** | [**TagTypeEnum**](TagTypeEnum.md) |  | 
 **type** | [**TagTypeEnum**](TagTypeEnum.md) |  | 
 **name** | **String** |  | 
 **name** | **String** |  | 
+**userId** | **String** |  | 
+**renameTagId** | **String** |  | [optional] 
 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
 
 

+ 0 - 5
mobile/openapi/lib/api.dart

@@ -48,7 +48,6 @@ part 'model/all_job_status_response_dto.dart';
 part 'model/asset_count_by_time_bucket.dart';
 part 'model/asset_count_by_time_bucket.dart';
 part 'model/asset_count_by_time_bucket_response_dto.dart';
 part 'model/asset_count_by_time_bucket_response_dto.dart';
 part 'model/asset_count_by_user_id_response_dto.dart';
 part 'model/asset_count_by_user_id_response_dto.dart';
-part 'model/asset_entity.dart';
 part 'model/asset_file_upload_response_dto.dart';
 part 'model/asset_file_upload_response_dto.dart';
 part 'model/asset_response_dto.dart';
 part 'model/asset_response_dto.dart';
 part 'model/asset_type_enum.dart';
 part 'model/asset_type_enum.dart';
@@ -68,7 +67,6 @@ part 'model/delete_asset_response_dto.dart';
 part 'model/delete_asset_status.dart';
 part 'model/delete_asset_status.dart';
 part 'model/device_info_response_dto.dart';
 part 'model/device_info_response_dto.dart';
 part 'model/device_type_enum.dart';
 part 'model/device_type_enum.dart';
-part 'model/exif_entity.dart';
 part 'model/exif_response_dto.dart';
 part 'model/exif_response_dto.dart';
 part 'model/get_asset_by_time_bucket_dto.dart';
 part 'model/get_asset_by_time_bucket_dto.dart';
 part 'model/get_asset_count_by_time_bucket_dto.dart';
 part 'model/get_asset_count_by_time_bucket_dto.dart';
@@ -90,12 +88,10 @@ part 'model/server_ping_response.dart';
 part 'model/server_stats_response_dto.dart';
 part 'model/server_stats_response_dto.dart';
 part 'model/server_version_reponse_dto.dart';
 part 'model/server_version_reponse_dto.dart';
 part 'model/sign_up_dto.dart';
 part 'model/sign_up_dto.dart';
-part 'model/smart_info_entity.dart';
 part 'model/smart_info_response_dto.dart';
 part 'model/smart_info_response_dto.dart';
 part 'model/system_config_key.dart';
 part 'model/system_config_key.dart';
 part 'model/system_config_response_dto.dart';
 part 'model/system_config_response_dto.dart';
 part 'model/system_config_response_item.dart';
 part 'model/system_config_response_item.dart';
-part 'model/tag_entity.dart';
 part 'model/tag_response_dto.dart';
 part 'model/tag_response_dto.dart';
 part 'model/tag_type_enum.dart';
 part 'model/tag_type_enum.dart';
 part 'model/thumbnail_format.dart';
 part 'model/thumbnail_format.dart';
@@ -107,7 +103,6 @@ part 'model/update_tag_dto.dart';
 part 'model/update_user_dto.dart';
 part 'model/update_user_dto.dart';
 part 'model/usage_by_user_dto.dart';
 part 'model/usage_by_user_dto.dart';
 part 'model/user_count_response_dto.dart';
 part 'model/user_count_response_dto.dart';
-part 'model/user_entity.dart';
 part 'model/user_response_dto.dart';
 part 'model/user_response_dto.dart';
 part 'model/validate_access_token_response_dto.dart';
 part 'model/validate_access_token_response_dto.dart';
 
 

+ 10 - 18
mobile/openapi/lib/api/tag_api.dart

@@ -48,7 +48,7 @@ class TagApi {
   /// Parameters:
   /// Parameters:
   ///
   ///
   /// * [CreateTagDto] createTagDto (required):
   /// * [CreateTagDto] createTagDto (required):
-  Future<TagEntity?> create(CreateTagDto createTagDto,) async {
+  Future<TagResponseDto?> create(CreateTagDto createTagDto,) async {
     final response = await createWithHttpInfo(createTagDto,);
     final response = await createWithHttpInfo(createTagDto,);
     if (response.statusCode >= HttpStatus.badRequest) {
     if (response.statusCode >= HttpStatus.badRequest) {
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
@@ -57,7 +57,7 @@ class TagApi {
     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
     // FormatException when trying to decode an empty string.
     // FormatException when trying to decode an empty string.
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
-      return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'TagEntity',) as TagEntity;
+      return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'TagResponseDto',) as TagResponseDto;
     
     
     }
     }
     return null;
     return null;
@@ -96,19 +96,11 @@ class TagApi {
   /// Parameters:
   /// Parameters:
   ///
   ///
   /// * [String] id (required):
   /// * [String] id (required):
-  Future<TagEntity?> delete(String id,) async {
+  Future<void> delete(String id,) async {
     final response = await deleteWithHttpInfo(id,);
     final response = await deleteWithHttpInfo(id,);
     if (response.statusCode >= HttpStatus.badRequest) {
     if (response.statusCode >= HttpStatus.badRequest) {
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
     }
     }
-    // When a remote server returns no body with a status of 204, we shall not decode it.
-    // At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
-    // FormatException when trying to decode an empty string.
-    if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
-      return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'TagEntity',) as TagEntity;
-    
-    }
-    return null;
   }
   }
 
 
   /// Performs an HTTP 'GET /tag' operation and returns the [Response].
   /// Performs an HTTP 'GET /tag' operation and returns the [Response].
@@ -137,7 +129,7 @@ class TagApi {
     );
     );
   }
   }
 
 
-  Future<List<TagEntity>?> findAll() async {
+  Future<List<TagResponseDto>?> findAll() async {
     final response = await findAllWithHttpInfo();
     final response = await findAllWithHttpInfo();
     if (response.statusCode >= HttpStatus.badRequest) {
     if (response.statusCode >= HttpStatus.badRequest) {
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
@@ -147,8 +139,8 @@ class TagApi {
     // FormatException when trying to decode an empty string.
     // FormatException when trying to decode an empty string.
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
       final responseBody = await _decodeBodyBytes(response);
       final responseBody = await _decodeBodyBytes(response);
-      return (await apiClient.deserializeAsync(responseBody, 'List<TagEntity>') as List)
-        .cast<TagEntity>()
+      return (await apiClient.deserializeAsync(responseBody, 'List<TagResponseDto>') as List)
+        .cast<TagResponseDto>()
         .toList();
         .toList();
 
 
     }
     }
@@ -188,7 +180,7 @@ class TagApi {
   /// Parameters:
   /// Parameters:
   ///
   ///
   /// * [String] id (required):
   /// * [String] id (required):
-  Future<TagEntity?> findOne(String id,) async {
+  Future<TagResponseDto?> findOne(String id,) async {
     final response = await findOneWithHttpInfo(id,);
     final response = await findOneWithHttpInfo(id,);
     if (response.statusCode >= HttpStatus.badRequest) {
     if (response.statusCode >= HttpStatus.badRequest) {
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
@@ -197,7 +189,7 @@ class TagApi {
     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
     // FormatException when trying to decode an empty string.
     // FormatException when trying to decode an empty string.
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
-      return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'TagEntity',) as TagEntity;
+      return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'TagResponseDto',) as TagResponseDto;
     
     
     }
     }
     return null;
     return null;
@@ -240,7 +232,7 @@ class TagApi {
   /// * [String] id (required):
   /// * [String] id (required):
   ///
   ///
   /// * [UpdateTagDto] updateTagDto (required):
   /// * [UpdateTagDto] updateTagDto (required):
-  Future<Object?> update(String id, UpdateTagDto updateTagDto,) async {
+  Future<TagResponseDto?> update(String id, UpdateTagDto updateTagDto,) async {
     final response = await updateWithHttpInfo(id, updateTagDto,);
     final response = await updateWithHttpInfo(id, updateTagDto,);
     if (response.statusCode >= HttpStatus.badRequest) {
     if (response.statusCode >= HttpStatus.badRequest) {
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
       throw ApiException(response.statusCode, await _decodeBodyBytes(response));
@@ -249,7 +241,7 @@ class TagApi {
     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
     // At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
     // FormatException when trying to decode an empty string.
     // FormatException when trying to decode an empty string.
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
     if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
-      return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'Object',) as Object;
+      return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'TagResponseDto',) as TagResponseDto;
     
     
     }
     }
     return null;
     return null;

+ 0 - 10
mobile/openapi/lib/api_client.dart

@@ -212,8 +212,6 @@ class ApiClient {
           return AssetCountByTimeBucketResponseDto.fromJson(value);
           return AssetCountByTimeBucketResponseDto.fromJson(value);
         case 'AssetCountByUserIdResponseDto':
         case 'AssetCountByUserIdResponseDto':
           return AssetCountByUserIdResponseDto.fromJson(value);
           return AssetCountByUserIdResponseDto.fromJson(value);
-        case 'AssetEntity':
-          return AssetEntity.fromJson(value);
         case 'AssetFileUploadResponseDto':
         case 'AssetFileUploadResponseDto':
           return AssetFileUploadResponseDto.fromJson(value);
           return AssetFileUploadResponseDto.fromJson(value);
         case 'AssetResponseDto':
         case 'AssetResponseDto':
@@ -252,8 +250,6 @@ class ApiClient {
           return DeviceInfoResponseDto.fromJson(value);
           return DeviceInfoResponseDto.fromJson(value);
         case 'DeviceTypeEnum':
         case 'DeviceTypeEnum':
           return DeviceTypeEnumTypeTransformer().decode(value);
           return DeviceTypeEnumTypeTransformer().decode(value);
-        case 'ExifEntity':
-          return ExifEntity.fromJson(value);
         case 'ExifResponseDto':
         case 'ExifResponseDto':
           return ExifResponseDto.fromJson(value);
           return ExifResponseDto.fromJson(value);
         case 'GetAssetByTimeBucketDto':
         case 'GetAssetByTimeBucketDto':
@@ -296,8 +292,6 @@ class ApiClient {
           return ServerVersionReponseDto.fromJson(value);
           return ServerVersionReponseDto.fromJson(value);
         case 'SignUpDto':
         case 'SignUpDto':
           return SignUpDto.fromJson(value);
           return SignUpDto.fromJson(value);
-        case 'SmartInfoEntity':
-          return SmartInfoEntity.fromJson(value);
         case 'SmartInfoResponseDto':
         case 'SmartInfoResponseDto':
           return SmartInfoResponseDto.fromJson(value);
           return SmartInfoResponseDto.fromJson(value);
         case 'SystemConfigKey':
         case 'SystemConfigKey':
@@ -306,8 +300,6 @@ class ApiClient {
           return SystemConfigResponseDto.fromJson(value);
           return SystemConfigResponseDto.fromJson(value);
         case 'SystemConfigResponseItem':
         case 'SystemConfigResponseItem':
           return SystemConfigResponseItem.fromJson(value);
           return SystemConfigResponseItem.fromJson(value);
-        case 'TagEntity':
-          return TagEntity.fromJson(value);
         case 'TagResponseDto':
         case 'TagResponseDto':
           return TagResponseDto.fromJson(value);
           return TagResponseDto.fromJson(value);
         case 'TagTypeEnum':
         case 'TagTypeEnum':
@@ -330,8 +322,6 @@ class ApiClient {
           return UsageByUserDto.fromJson(value);
           return UsageByUserDto.fromJson(value);
         case 'UserCountResponseDto':
         case 'UserCountResponseDto':
           return UserCountResponseDto.fromJson(value);
           return UserCountResponseDto.fromJson(value);
-        case 'UserEntity':
-          return UserEntity.fromJson(value);
         case 'UserResponseDto':
         case 'UserResponseDto':
           return UserResponseDto.fromJson(value);
           return UserResponseDto.fromJson(value);
         case 'ValidateAccessTokenResponseDto':
         case 'ValidateAccessTokenResponseDto':

+ 22 - 3
mobile/openapi/lib/model/tag_response_dto.dart

@@ -16,6 +16,8 @@ class TagResponseDto {
     required this.id,
     required this.id,
     required this.type,
     required this.type,
     required this.name,
     required this.name,
+    required this.userId,
+    this.renameTagId,
   });
   });
 
 
   String id;
   String id;
@@ -24,27 +26,41 @@ class TagResponseDto {
 
 
   String name;
   String name;
 
 
+  String userId;
+
+  String? renameTagId;
+
   @override
   @override
   bool operator ==(Object other) => identical(this, other) || other is TagResponseDto &&
   bool operator ==(Object other) => identical(this, other) || other is TagResponseDto &&
      other.id == id &&
      other.id == id &&
      other.type == type &&
      other.type == type &&
-     other.name == name;
+     other.name == name &&
+     other.userId == userId &&
+     other.renameTagId == renameTagId;
 
 
   @override
   @override
   int get hashCode =>
   int get hashCode =>
     // ignore: unnecessary_parenthesis
     // ignore: unnecessary_parenthesis
     (id.hashCode) +
     (id.hashCode) +
     (type.hashCode) +
     (type.hashCode) +
-    (name.hashCode);
+    (name.hashCode) +
+    (userId.hashCode) +
+    (renameTagId == null ? 0 : renameTagId!.hashCode);
 
 
   @override
   @override
-  String toString() => 'TagResponseDto[id=$id, type=$type, name=$name]';
+  String toString() => 'TagResponseDto[id=$id, type=$type, name=$name, userId=$userId, renameTagId=$renameTagId]';
 
 
   Map<String, dynamic> toJson() {
   Map<String, dynamic> toJson() {
     final _json = <String, dynamic>{};
     final _json = <String, dynamic>{};
       _json[r'id'] = id;
       _json[r'id'] = id;
       _json[r'type'] = type;
       _json[r'type'] = type;
       _json[r'name'] = name;
       _json[r'name'] = name;
+      _json[r'userId'] = userId;
+    if (renameTagId != null) {
+      _json[r'renameTagId'] = renameTagId;
+    } else {
+      _json[r'renameTagId'] = null;
+    }
     return _json;
     return _json;
   }
   }
 
 
@@ -70,6 +86,8 @@ class TagResponseDto {
         id: mapValueOfType<String>(json, r'id')!,
         id: mapValueOfType<String>(json, r'id')!,
         type: TagTypeEnum.fromJson(json[r'type'])!,
         type: TagTypeEnum.fromJson(json[r'type'])!,
         name: mapValueOfType<String>(json, r'name')!,
         name: mapValueOfType<String>(json, r'name')!,
+        userId: mapValueOfType<String>(json, r'userId')!,
+        renameTagId: mapValueOfType<String>(json, r'renameTagId'),
       );
       );
     }
     }
     return null;
     return null;
@@ -122,6 +140,7 @@ class TagResponseDto {
     'id',
     'id',
     'type',
     'type',
     'name',
     'name',
+    'userId',
   };
   };
 }
 }
 
 

+ 6 - 0
server/apps/immich/src/api-v1/tag/response-dto/tag-response.dto.ts

@@ -9,6 +9,10 @@ export class TagResponseDto {
   type!: string;
   type!: string;
 
 
   name!: string;
   name!: string;
+
+  userId!: string;
+
+  renameTagId?: string | null;
 }
 }
 
 
 export function mapTag(entity: TagEntity): TagResponseDto {
 export function mapTag(entity: TagEntity): TagResponseDto {
@@ -16,5 +20,7 @@ export function mapTag(entity: TagEntity): TagResponseDto {
     id: entity.id,
     id: entity.id,
     type: entity.type,
     type: entity.type,
     name: entity.name,
     name: entity.name,
+    userId: entity.userId,
+    renameTagId: entity.renameTagId,
   };
   };
 }
 }

+ 8 - 7
server/apps/immich/src/api-v1/tag/tag.controller.ts

@@ -5,7 +5,7 @@ import { UpdateTagDto } from './dto/update-tag.dto';
 import { Authenticated } from '../../decorators/authenticated.decorator';
 import { Authenticated } from '../../decorators/authenticated.decorator';
 import { ApiTags } from '@nestjs/swagger';
 import { ApiTags } from '@nestjs/swagger';
 import { AuthUserDto, GetAuthUser } from '../../decorators/auth-user.decorator';
 import { AuthUserDto, GetAuthUser } from '../../decorators/auth-user.decorator';
-import { TagEntity } from '@app/database/entities/tag.entity';
+import { mapTag, TagResponseDto } from "./response-dto/tag-response.dto";
 
 
 @Authenticated()
 @Authenticated()
 @ApiTags('Tag')
 @ApiTags('Tag')
@@ -14,18 +14,19 @@ export class TagController {
   constructor(private readonly tagService: TagService) {}
   constructor(private readonly tagService: TagService) {}
 
 
   @Post()
   @Post()
-  create(@GetAuthUser() authUser: AuthUserDto, @Body(ValidationPipe) createTagDto: CreateTagDto): Promise<TagEntity> {
+  create(@GetAuthUser() authUser: AuthUserDto, @Body(ValidationPipe) createTagDto: CreateTagDto): Promise<TagResponseDto> {
     return this.tagService.create(authUser, createTagDto);
     return this.tagService.create(authUser, createTagDto);
   }
   }
 
 
   @Get()
   @Get()
-  findAll(@GetAuthUser() authUser: AuthUserDto) {
+  findAll(@GetAuthUser() authUser: AuthUserDto): Promise<TagResponseDto[]> {
     return this.tagService.findAll(authUser);
     return this.tagService.findAll(authUser);
   }
   }
 
 
   @Get(':id')
   @Get(':id')
-  findOne(@GetAuthUser() authUser: AuthUserDto, @Param('id') id: string) {
-    return this.tagService.findOne(authUser, id);
+  async findOne(@GetAuthUser() authUser: AuthUserDto, @Param('id') id: string): Promise<TagResponseDto> {
+    const tag = await this.tagService.findOne(authUser, id);
+    return mapTag(tag);
   }
   }
 
 
   @Patch(':id')
   @Patch(':id')
@@ -33,12 +34,12 @@ export class TagController {
     @GetAuthUser() authUser: AuthUserDto,
     @GetAuthUser() authUser: AuthUserDto,
     @Param('id') id: string,
     @Param('id') id: string,
     @Body(ValidationPipe) updateTagDto: UpdateTagDto,
     @Body(ValidationPipe) updateTagDto: UpdateTagDto,
-  ) {
+  ): Promise<TagResponseDto>  {
     return this.tagService.update(authUser, id, updateTagDto);
     return this.tagService.update(authUser, id, updateTagDto);
   }
   }
 
 
   @Delete(':id')
   @Delete(':id')
-  delete(@GetAuthUser() authUser: AuthUserDto, @Param('id') id: string) {
+  delete(@GetAuthUser() authUser: AuthUserDto, @Param('id') id: string): Promise<void> {
     return this.tagService.remove(authUser, id);
     return this.tagService.remove(authUser, id);
   }
   }
 }
 }

+ 11 - 7
server/apps/immich/src/api-v1/tag/tag.service.ts

@@ -4,6 +4,7 @@ import { AuthUserDto } from '../../decorators/auth-user.decorator';
 import { CreateTagDto } from './dto/create-tag.dto';
 import { CreateTagDto } from './dto/create-tag.dto';
 import { UpdateTagDto } from './dto/update-tag.dto';
 import { UpdateTagDto } from './dto/update-tag.dto';
 import { ITagRepository, TAG_REPOSITORY } from './tag.repository';
 import { ITagRepository, TAG_REPOSITORY } from './tag.repository';
+import { mapTag, TagResponseDto } from "./response-dto/tag-response.dto";
 
 
 @Injectable()
 @Injectable()
 export class TagService {
 export class TagService {
@@ -13,7 +14,8 @@ export class TagService {
 
 
   async create(authUser: AuthUserDto, createTagDto: CreateTagDto) {
   async create(authUser: AuthUserDto, createTagDto: CreateTagDto) {
     try {
     try {
-      return await this._tagRepository.create(authUser.id, createTagDto.type, createTagDto.name);
+      const newTag = await this._tagRepository.create(authUser.id, createTagDto.type, createTagDto.name);
+      return mapTag(newTag);
     } catch (e: any) {
     } catch (e: any) {
       this.logger.error(e, e.stack);
       this.logger.error(e, e.stack);
       throw new BadRequestException(`Failed to create tag: ${e.detail}`);
       throw new BadRequestException(`Failed to create tag: ${e.detail}`);
@@ -21,7 +23,8 @@ export class TagService {
   }
   }
 
 
   async findAll(authUser: AuthUserDto) {
   async findAll(authUser: AuthUserDto) {
-    return await this._tagRepository.getByUserId(authUser.id);
+    const tags = await this._tagRepository.getByUserId(authUser.id);
+    return tags.map(mapTag);
   }
   }
 
 
   async findOne(authUser: AuthUserDto, id: string): Promise<TagEntity> {
   async findOne(authUser: AuthUserDto, id: string): Promise<TagEntity> {
@@ -34,15 +37,16 @@ export class TagService {
     return tag;
     return tag;
   }
   }
 
 
-  async update(authUser: AuthUserDto, id: string, updateTagDto: UpdateTagDto) {
+  async update(authUser: AuthUserDto, id: string, updateTagDto: UpdateTagDto): Promise<TagResponseDto>  {
     const tag = await this.findOne(authUser, id);
     const tag = await this.findOne(authUser, id);
 
 
-    return this._tagRepository.update(tag, updateTagDto);
+    await this._tagRepository.update(tag, updateTagDto);
+
+    return mapTag(tag);
   }
   }
 
 
-  async remove(authUser: AuthUserDto, id: string) {
+  async remove(authUser: AuthUserDto, id: string): Promise<void> {
     const tag = await this.findOne(authUser, id);
     const tag = await this.findOne(authUser, id);
-
-    return this._tagRepository.remove(tag);
+    await this._tagRepository.remove(tag);
   }
   }
 }
 }

+ 14 - 379
server/immich-openapi-specs.json

@@ -1490,7 +1490,7 @@
             "content": {
             "content": {
               "application/json": {
               "application/json": {
                 "schema": {
                 "schema": {
-                  "$ref": "#/components/schemas/TagEntity"
+                  "$ref": "#/components/schemas/TagResponseDto"
                 }
                 }
               }
               }
             }
             }
@@ -1511,7 +1511,7 @@
                 "schema": {
                 "schema": {
                   "type": "array",
                   "type": "array",
                   "items": {
                   "items": {
-                    "$ref": "#/components/schemas/TagEntity"
+                    "$ref": "#/components/schemas/TagResponseDto"
                   }
                   }
                 }
                 }
               }
               }
@@ -1542,7 +1542,7 @@
             "content": {
             "content": {
               "application/json": {
               "application/json": {
                 "schema": {
                 "schema": {
-                  "$ref": "#/components/schemas/TagEntity"
+                  "$ref": "#/components/schemas/TagResponseDto"
                 }
                 }
               }
               }
             }
             }
@@ -1580,7 +1580,7 @@
             "content": {
             "content": {
               "application/json": {
               "application/json": {
                 "schema": {
                 "schema": {
-                  "type": "object"
+                  "$ref": "#/components/schemas/TagResponseDto"
                 }
                 }
               }
               }
             }
             }
@@ -1604,14 +1604,7 @@
         ],
         ],
         "responses": {
         "responses": {
           "200": {
           "200": {
-            "description": "",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/TagEntity"
-                }
-              }
-            }
+            "description": ""
           }
           }
         },
         },
         "tags": [
         "tags": [
@@ -2527,12 +2520,20 @@
           },
           },
           "name": {
           "name": {
             "type": "string"
             "type": "string"
+          },
+          "userId": {
+            "type": "string"
+          },
+          "renameTagId": {
+            "type": "string",
+            "nullable": true
           }
           }
         },
         },
         "required": [
         "required": [
           "id",
           "id",
           "type",
           "type",
-          "name"
+          "name",
+          "userId"
         ]
         ]
       },
       },
       "AssetResponseDto": {
       "AssetResponseDto": {
@@ -3025,372 +3026,6 @@
           "name"
           "name"
         ]
         ]
       },
       },
-      "ExifEntity": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "string"
-          },
-          "assetId": {
-            "type": "string"
-          },
-          "description": {
-            "type": "string",
-            "description": "General info"
-          },
-          "exifImageWidth": {
-            "type": "number",
-            "nullable": true
-          },
-          "exifImageHeight": {
-            "type": "number",
-            "nullable": true
-          },
-          "fileSizeInByte": {
-            "type": "number",
-            "nullable": true
-          },
-          "orientation": {
-            "type": "string",
-            "nullable": true
-          },
-          "dateTimeOriginal": {
-            "format": "date-time",
-            "type": "string",
-            "nullable": true
-          },
-          "modifyDate": {
-            "format": "date-time",
-            "type": "string",
-            "nullable": true
-          },
-          "latitude": {
-            "type": "number",
-            "nullable": true
-          },
-          "longitude": {
-            "type": "number",
-            "nullable": true
-          },
-          "city": {
-            "type": "string",
-            "nullable": true
-          },
-          "state": {
-            "type": "string",
-            "nullable": true
-          },
-          "country": {
-            "type": "string",
-            "nullable": true
-          },
-          "make": {
-            "type": "string",
-            "nullable": true,
-            "description": "Image info"
-          },
-          "model": {
-            "type": "string",
-            "nullable": true
-          },
-          "imageName": {
-            "type": "string",
-            "nullable": true
-          },
-          "lensModel": {
-            "type": "string",
-            "nullable": true
-          },
-          "fNumber": {
-            "type": "number",
-            "nullable": true
-          },
-          "focalLength": {
-            "type": "number",
-            "nullable": true
-          },
-          "iso": {
-            "type": "number",
-            "nullable": true
-          },
-          "exposureTime": {
-            "type": "number",
-            "nullable": true
-          },
-          "fps": {
-            "type": "number",
-            "nullable": true,
-            "description": "Video info"
-          },
-          "asset": {
-            "$ref": "#/components/schemas/AssetEntity"
-          },
-          "exifTextSearchableColumn": {
-            "type": "string"
-          }
-        },
-        "required": [
-          "id",
-          "assetId",
-          "description",
-          "exifImageWidth",
-          "exifImageHeight",
-          "fileSizeInByte",
-          "orientation",
-          "dateTimeOriginal",
-          "modifyDate",
-          "latitude",
-          "longitude",
-          "city",
-          "state",
-          "country",
-          "make",
-          "model",
-          "imageName",
-          "lensModel",
-          "fNumber",
-          "focalLength",
-          "iso",
-          "exposureTime",
-          "exifTextSearchableColumn"
-        ]
-      },
-      "SmartInfoEntity": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "string"
-          },
-          "assetId": {
-            "type": "string"
-          },
-          "tags": {
-            "nullable": true,
-            "type": "array",
-            "items": {
-              "type": "string"
-            }
-          },
-          "objects": {
-            "nullable": true,
-            "type": "array",
-            "items": {
-              "type": "string"
-            }
-          },
-          "asset": {
-            "$ref": "#/components/schemas/AssetEntity"
-          }
-        },
-        "required": [
-          "id",
-          "assetId",
-          "tags",
-          "objects"
-        ]
-      },
-      "UserEntity": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "string"
-          },
-          "firstName": {
-            "type": "string"
-          },
-          "lastName": {
-            "type": "string"
-          },
-          "isAdmin": {
-            "type": "boolean"
-          },
-          "email": {
-            "type": "string"
-          },
-          "password": {
-            "type": "string"
-          },
-          "salt": {
-            "type": "string"
-          },
-          "oauthId": {
-            "type": "string"
-          },
-          "profileImagePath": {
-            "type": "string"
-          },
-          "shouldChangePassword": {
-            "type": "boolean"
-          },
-          "createdAt": {
-            "type": "string"
-          },
-          "deletedAt": {
-            "format": "date-time",
-            "type": "string"
-          },
-          "tags": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/TagEntity"
-            }
-          }
-        },
-        "required": [
-          "id",
-          "firstName",
-          "lastName",
-          "isAdmin",
-          "email",
-          "oauthId",
-          "profileImagePath",
-          "shouldChangePassword",
-          "createdAt",
-          "tags"
-        ]
-      },
-      "TagEntity": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "string"
-          },
-          "type": {
-            "enum": [
-              "OBJECT",
-              "FACE",
-              "CUSTOM"
-            ],
-            "type": "string"
-          },
-          "name": {
-            "type": "string"
-          },
-          "userId": {
-            "type": "string"
-          },
-          "renameTagId": {
-            "type": "string"
-          },
-          "assets": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/AssetEntity"
-            }
-          },
-          "user": {
-            "$ref": "#/components/schemas/UserEntity"
-          }
-        },
-        "required": [
-          "id",
-          "type",
-          "name",
-          "userId",
-          "renameTagId",
-          "assets",
-          "user"
-        ]
-      },
-      "AssetEntity": {
-        "type": "object",
-        "properties": {
-          "id": {
-            "type": "string"
-          },
-          "deviceAssetId": {
-            "type": "string"
-          },
-          "userId": {
-            "type": "string"
-          },
-          "deviceId": {
-            "type": "string"
-          },
-          "type": {
-            "type": "string",
-            "enum": [
-              "IMAGE",
-              "VIDEO",
-              "AUDIO",
-              "OTHER"
-            ]
-          },
-          "originalPath": {
-            "type": "string"
-          },
-          "resizePath": {
-            "type": "string",
-            "nullable": true
-          },
-          "webpPath": {
-            "type": "string",
-            "nullable": true
-          },
-          "encodedVideoPath": {
-            "type": "string"
-          },
-          "createdAt": {
-            "type": "string"
-          },
-          "modifiedAt": {
-            "type": "string"
-          },
-          "isFavorite": {
-            "type": "boolean"
-          },
-          "mimeType": {
-            "type": "string",
-            "nullable": true
-          },
-          "checksum": {
-            "type": "object",
-            "nullable": true
-          },
-          "duration": {
-            "type": "string",
-            "nullable": true
-          },
-          "isVisible": {
-            "type": "boolean"
-          },
-          "livePhotoVideoId": {
-            "type": "string",
-            "nullable": true
-          },
-          "exifInfo": {
-            "$ref": "#/components/schemas/ExifEntity"
-          },
-          "smartInfo": {
-            "$ref": "#/components/schemas/SmartInfoEntity"
-          },
-          "tags": {
-            "type": "array",
-            "items": {
-              "$ref": "#/components/schemas/TagEntity"
-            }
-          }
-        },
-        "required": [
-          "id",
-          "deviceAssetId",
-          "userId",
-          "deviceId",
-          "type",
-          "originalPath",
-          "resizePath",
-          "webpPath",
-          "encodedVideoPath",
-          "createdAt",
-          "modifiedAt",
-          "isFavorite",
-          "mimeType",
-          "duration",
-          "isVisible",
-          "livePhotoVideoId",
-          "tags"
-        ]
-      },
       "UpdateTagDto": {
       "UpdateTagDto": {
         "type": "object",
         "type": "object",
         "properties": {
         "properties": {

+ 19 - 481
web/src/api/open-api/api.ts

@@ -325,143 +325,6 @@ export interface AssetCountByUserIdResponseDto {
      */
      */
     'total': number;
     'total': number;
 }
 }
-/**
- * 
- * @export
- * @interface AssetEntity
- */
-export interface AssetEntity {
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'id': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'deviceAssetId': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'userId': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'deviceId': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'type': AssetEntityTypeEnum;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'originalPath': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'resizePath': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'webpPath': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'encodedVideoPath': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'createdAt': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'modifiedAt': string;
-    /**
-     * 
-     * @type {boolean}
-     * @memberof AssetEntity
-     */
-    'isFavorite': boolean;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'mimeType': string | null;
-    /**
-     * 
-     * @type {object}
-     * @memberof AssetEntity
-     */
-    'checksum'?: object | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'duration': string | null;
-    /**
-     * 
-     * @type {boolean}
-     * @memberof AssetEntity
-     */
-    'isVisible': boolean;
-    /**
-     * 
-     * @type {string}
-     * @memberof AssetEntity
-     */
-    'livePhotoVideoId': string | null;
-    /**
-     * 
-     * @type {ExifEntity}
-     * @memberof AssetEntity
-     */
-    'exifInfo'?: ExifEntity;
-    /**
-     * 
-     * @type {SmartInfoEntity}
-     * @memberof AssetEntity
-     */
-    'smartInfo'?: SmartInfoEntity;
-    /**
-     * 
-     * @type {Array<TagEntity>}
-     * @memberof AssetEntity
-     */
-    'tags': Array<TagEntity>;
-}
-
-export const AssetEntityTypeEnum = {
-    Image: 'IMAGE',
-    Video: 'VIDEO',
-    Audio: 'AUDIO',
-    Other: 'OTHER'
-} as const;
-
-export type AssetEntityTypeEnum = typeof AssetEntityTypeEnum[keyof typeof AssetEntityTypeEnum];
-
 /**
 /**
  * 
  * 
  * @export
  * @export
@@ -973,163 +836,6 @@ export const DeviceTypeEnum = {
 export type DeviceTypeEnum = typeof DeviceTypeEnum[keyof typeof DeviceTypeEnum];
 export type DeviceTypeEnum = typeof DeviceTypeEnum[keyof typeof DeviceTypeEnum];
 
 
 
 
-/**
- * 
- * @export
- * @interface ExifEntity
- */
-export interface ExifEntity {
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'id': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'assetId': string;
-    /**
-     * General info
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'description': string;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'exifImageWidth': number | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'exifImageHeight': number | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'fileSizeInByte': number | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'orientation': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'dateTimeOriginal': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'modifyDate': string | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'latitude': number | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'longitude': number | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'city': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'state': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'country': string | null;
-    /**
-     * Image info
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'make': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'model': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'imageName': string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'lensModel': string | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'fNumber': number | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'focalLength': number | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'iso': number | null;
-    /**
-     * 
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'exposureTime': number | null;
-    /**
-     * Video info
-     * @type {number}
-     * @memberof ExifEntity
-     */
-    'fps'?: number | null;
-    /**
-     * 
-     * @type {AssetEntity}
-     * @memberof ExifEntity
-     */
-    'asset'?: AssetEntity;
-    /**
-     * 
-     * @type {string}
-     * @memberof ExifEntity
-     */
-    'exifTextSearchableColumn': string;
-}
 /**
 /**
  * 
  * 
  * @export
  * @export
@@ -1719,43 +1425,6 @@ export interface SignUpDto {
      */
      */
     'lastName': string;
     'lastName': string;
 }
 }
-/**
- * 
- * @export
- * @interface SmartInfoEntity
- */
-export interface SmartInfoEntity {
-    /**
-     * 
-     * @type {string}
-     * @memberof SmartInfoEntity
-     */
-    'id': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof SmartInfoEntity
-     */
-    'assetId': string;
-    /**
-     * 
-     * @type {Array<string>}
-     * @memberof SmartInfoEntity
-     */
-    'tags': Array<string> | null;
-    /**
-     * 
-     * @type {Array<string>}
-     * @memberof SmartInfoEntity
-     */
-    'objects': Array<string> | null;
-    /**
-     * 
-     * @type {AssetEntity}
-     * @memberof SmartInfoEntity
-     */
-    'asset'?: AssetEntity;
-}
 /**
 /**
  * 
  * 
  * @export
  * @export
@@ -1845,85 +1514,39 @@ export interface SystemConfigResponseItem {
 /**
 /**
  * 
  * 
  * @export
  * @export
- * @interface TagEntity
+ * @interface TagResponseDto
  */
  */
-export interface TagEntity {
+export interface TagResponseDto {
     /**
     /**
      * 
      * 
      * @type {string}
      * @type {string}
-     * @memberof TagEntity
+     * @memberof TagResponseDto
      */
      */
     'id': string;
     'id': string;
     /**
     /**
      * 
      * 
-     * @type {string}
-     * @memberof TagEntity
+     * @type {TagTypeEnum}
+     * @memberof TagResponseDto
      */
      */
-    'type': TagEntityTypeEnum;
+    'type': TagTypeEnum;
     /**
     /**
      * 
      * 
      * @type {string}
      * @type {string}
-     * @memberof TagEntity
+     * @memberof TagResponseDto
      */
      */
     'name': string;
     'name': string;
     /**
     /**
      * 
      * 
      * @type {string}
      * @type {string}
-     * @memberof TagEntity
-     */
-    'userId': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof TagEntity
-     */
-    'renameTagId': string;
-    /**
-     * 
-     * @type {Array<AssetEntity>}
-     * @memberof TagEntity
-     */
-    'assets': Array<AssetEntity>;
-    /**
-     * 
-     * @type {UserEntity}
-     * @memberof TagEntity
-     */
-    'user': UserEntity;
-}
-
-export const TagEntityTypeEnum = {
-    Object: 'OBJECT',
-    Face: 'FACE',
-    Custom: 'CUSTOM'
-} as const;
-
-export type TagEntityTypeEnum = typeof TagEntityTypeEnum[keyof typeof TagEntityTypeEnum];
-
-/**
- * 
- * @export
- * @interface TagResponseDto
- */
-export interface TagResponseDto {
-    /**
-     * 
-     * @type {string}
-     * @memberof TagResponseDto
-     */
-    'id': string;
-    /**
-     * 
-     * @type {TagTypeEnum}
      * @memberof TagResponseDto
      * @memberof TagResponseDto
      */
      */
-    'type': TagTypeEnum;
+    'userId': string;
     /**
     /**
      * 
      * 
      * @type {string}
      * @type {string}
      * @memberof TagResponseDto
      * @memberof TagResponseDto
      */
      */
-    'name': string;
+    'renameTagId'?: string | null;
 }
 }
 /**
 /**
  * 
  * 
@@ -2149,91 +1772,6 @@ export interface UserCountResponseDto {
      */
      */
     'userCount': number;
     'userCount': number;
 }
 }
-/**
- * 
- * @export
- * @interface UserEntity
- */
-export interface UserEntity {
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'id': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'firstName': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'lastName': string;
-    /**
-     * 
-     * @type {boolean}
-     * @memberof UserEntity
-     */
-    'isAdmin': boolean;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'email': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'password'?: string;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'salt'?: string;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'oauthId': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'profileImagePath': string;
-    /**
-     * 
-     * @type {boolean}
-     * @memberof UserEntity
-     */
-    'shouldChangePassword': boolean;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'createdAt': string;
-    /**
-     * 
-     * @type {string}
-     * @memberof UserEntity
-     */
-    'deletedAt'?: string;
-    /**
-     * 
-     * @type {Array<TagEntity>}
-     * @memberof UserEntity
-     */
-    'tags': Array<TagEntity>;
-}
 /**
 /**
  * 
  * 
  * @export
  * @export
@@ -6005,7 +5543,7 @@ export const TagApiFp = function(configuration?: Configuration) {
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        async _delete(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagEntity>> {
+        async _delete(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
             const localVarAxiosArgs = await localVarAxiosParamCreator._delete(id, options);
             const localVarAxiosArgs = await localVarAxiosParamCreator._delete(id, options);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
         },
         },
@@ -6015,7 +5553,7 @@ export const TagApiFp = function(configuration?: Configuration) {
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        async create(createTagDto: CreateTagDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagEntity>> {
+        async create(createTagDto: CreateTagDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagResponseDto>> {
             const localVarAxiosArgs = await localVarAxiosParamCreator.create(createTagDto, options);
             const localVarAxiosArgs = await localVarAxiosParamCreator.create(createTagDto, options);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
         },
         },
@@ -6024,7 +5562,7 @@ export const TagApiFp = function(configuration?: Configuration) {
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        async findAll(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<TagEntity>>> {
+        async findAll(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<TagResponseDto>>> {
             const localVarAxiosArgs = await localVarAxiosParamCreator.findAll(options);
             const localVarAxiosArgs = await localVarAxiosParamCreator.findAll(options);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
         },
         },
@@ -6034,7 +5572,7 @@ export const TagApiFp = function(configuration?: Configuration) {
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        async findOne(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagEntity>> {
+        async findOne(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagResponseDto>> {
             const localVarAxiosArgs = await localVarAxiosParamCreator.findOne(id, options);
             const localVarAxiosArgs = await localVarAxiosParamCreator.findOne(id, options);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
         },
         },
@@ -6045,7 +5583,7 @@ export const TagApiFp = function(configuration?: Configuration) {
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        async update(id: string, updateTagDto: UpdateTagDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<object>> {
+        async update(id: string, updateTagDto: UpdateTagDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagResponseDto>> {
             const localVarAxiosArgs = await localVarAxiosParamCreator.update(id, updateTagDto, options);
             const localVarAxiosArgs = await localVarAxiosParamCreator.update(id, updateTagDto, options);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
             return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
         },
         },
@@ -6065,7 +5603,7 @@ export const TagApiFactory = function (configuration?: Configuration, basePath?:
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        _delete(id: string, options?: any): AxiosPromise<TagEntity> {
+        _delete(id: string, options?: any): AxiosPromise<void> {
             return localVarFp._delete(id, options).then((request) => request(axios, basePath));
             return localVarFp._delete(id, options).then((request) => request(axios, basePath));
         },
         },
         /**
         /**
@@ -6074,7 +5612,7 @@ export const TagApiFactory = function (configuration?: Configuration, basePath?:
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        create(createTagDto: CreateTagDto, options?: any): AxiosPromise<TagEntity> {
+        create(createTagDto: CreateTagDto, options?: any): AxiosPromise<TagResponseDto> {
             return localVarFp.create(createTagDto, options).then((request) => request(axios, basePath));
             return localVarFp.create(createTagDto, options).then((request) => request(axios, basePath));
         },
         },
         /**
         /**
@@ -6082,7 +5620,7 @@ export const TagApiFactory = function (configuration?: Configuration, basePath?:
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        findAll(options?: any): AxiosPromise<Array<TagEntity>> {
+        findAll(options?: any): AxiosPromise<Array<TagResponseDto>> {
             return localVarFp.findAll(options).then((request) => request(axios, basePath));
             return localVarFp.findAll(options).then((request) => request(axios, basePath));
         },
         },
         /**
         /**
@@ -6091,7 +5629,7 @@ export const TagApiFactory = function (configuration?: Configuration, basePath?:
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        findOne(id: string, options?: any): AxiosPromise<TagEntity> {
+        findOne(id: string, options?: any): AxiosPromise<TagResponseDto> {
             return localVarFp.findOne(id, options).then((request) => request(axios, basePath));
             return localVarFp.findOne(id, options).then((request) => request(axios, basePath));
         },
         },
         /**
         /**
@@ -6101,7 +5639,7 @@ export const TagApiFactory = function (configuration?: Configuration, basePath?:
          * @param {*} [options] Override http request option.
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          * @throws {RequiredError}
          */
          */
-        update(id: string, updateTagDto: UpdateTagDto, options?: any): AxiosPromise<object> {
+        update(id: string, updateTagDto: UpdateTagDto, options?: any): AxiosPromise<TagResponseDto> {
             return localVarFp.update(id, updateTagDto, options).then((request) => request(axios, basePath));
             return localVarFp.update(id, updateTagDto, options).then((request) => request(axios, basePath));
         },
         },
     };
     };