mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	refactor(server): device info service (#1071)
* refactor(server): device info service * use upsertDeviceInfo in mobile app * fix: return types and dedupe code Co-authored-by: Fynn Petersen-Frey <zoodyy@users.noreply.github.com>
This commit is contained in:
		@@ -376,8 +376,8 @@ class BackupService {
 | 
			
		||||
    DeviceTypeEnum deviceType,
 | 
			
		||||
  ) async {
 | 
			
		||||
    try {
 | 
			
		||||
      var updatedDeviceInfo = await _apiService.deviceInfoApi.updateDeviceInfo(
 | 
			
		||||
        UpdateDeviceInfoDto(
 | 
			
		||||
      var updatedDeviceInfo = await _apiService.deviceInfoApi.upsertDeviceInfo(
 | 
			
		||||
        UpsertDeviceInfoDto(
 | 
			
		||||
          deviceId: deviceId,
 | 
			
		||||
          deviceType: deviceType,
 | 
			
		||||
          isAutoBackup: status,
 | 
			
		||||
 
 | 
			
		||||
@@ -210,8 +210,8 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
 | 
			
		||||
    // Register device info
 | 
			
		||||
    try {
 | 
			
		||||
      DeviceInfoResponseDto? deviceInfo =
 | 
			
		||||
          await _apiService.deviceInfoApi.createDeviceInfo(
 | 
			
		||||
        CreateDeviceInfoDto(
 | 
			
		||||
          await _apiService.deviceInfoApi.upsertDeviceInfo(
 | 
			
		||||
        UpsertDeviceInfoDto(
 | 
			
		||||
          deviceId: state.deviceId,
 | 
			
		||||
          deviceType: state.deviceType,
 | 
			
		||||
        ),
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								mobile/openapi/.openapi-generator/FILES
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								mobile/openapi/.openapi-generator/FILES
									
									
									
										generated
									
									
									
								
							@@ -24,7 +24,6 @@ doc/CheckDuplicateAssetResponseDto.md
 | 
			
		||||
doc/CheckExistingAssetsDto.md
 | 
			
		||||
doc/CheckExistingAssetsResponseDto.md
 | 
			
		||||
doc/CreateAlbumDto.md
 | 
			
		||||
doc/CreateDeviceInfoDto.md
 | 
			
		||||
doc/CreateProfileImageResponseDto.md
 | 
			
		||||
doc/CreateTagDto.md
 | 
			
		||||
doc/CreateUserDto.md
 | 
			
		||||
@@ -72,9 +71,9 @@ doc/ThumbnailFormat.md
 | 
			
		||||
doc/TimeGroupEnum.md
 | 
			
		||||
doc/UpdateAlbumDto.md
 | 
			
		||||
doc/UpdateAssetDto.md
 | 
			
		||||
doc/UpdateDeviceInfoDto.md
 | 
			
		||||
doc/UpdateTagDto.md
 | 
			
		||||
doc/UpdateUserDto.md
 | 
			
		||||
doc/UpsertDeviceInfoDto.md
 | 
			
		||||
doc/UsageByUserDto.md
 | 
			
		||||
doc/UserApi.md
 | 
			
		||||
doc/UserCountResponseDto.md
 | 
			
		||||
@@ -118,7 +117,6 @@ lib/model/check_duplicate_asset_response_dto.dart
 | 
			
		||||
lib/model/check_existing_assets_dto.dart
 | 
			
		||||
lib/model/check_existing_assets_response_dto.dart
 | 
			
		||||
lib/model/create_album_dto.dart
 | 
			
		||||
lib/model/create_device_info_dto.dart
 | 
			
		||||
lib/model/create_profile_image_response_dto.dart
 | 
			
		||||
lib/model/create_tag_dto.dart
 | 
			
		||||
lib/model/create_user_dto.dart
 | 
			
		||||
@@ -160,9 +158,9 @@ lib/model/thumbnail_format.dart
 | 
			
		||||
lib/model/time_group_enum.dart
 | 
			
		||||
lib/model/update_album_dto.dart
 | 
			
		||||
lib/model/update_asset_dto.dart
 | 
			
		||||
lib/model/update_device_info_dto.dart
 | 
			
		||||
lib/model/update_tag_dto.dart
 | 
			
		||||
lib/model/update_user_dto.dart
 | 
			
		||||
lib/model/upsert_device_info_dto.dart
 | 
			
		||||
lib/model/usage_by_user_dto.dart
 | 
			
		||||
lib/model/user_count_response_dto.dart
 | 
			
		||||
lib/model/user_response_dto.dart
 | 
			
		||||
@@ -189,7 +187,6 @@ test/check_duplicate_asset_response_dto_test.dart
 | 
			
		||||
test/check_existing_assets_dto_test.dart
 | 
			
		||||
test/check_existing_assets_response_dto_test.dart
 | 
			
		||||
test/create_album_dto_test.dart
 | 
			
		||||
test/create_device_info_dto_test.dart
 | 
			
		||||
test/create_profile_image_response_dto_test.dart
 | 
			
		||||
test/create_tag_dto_test.dart
 | 
			
		||||
test/create_user_dto_test.dart
 | 
			
		||||
@@ -237,9 +234,9 @@ test/thumbnail_format_test.dart
 | 
			
		||||
test/time_group_enum_test.dart
 | 
			
		||||
test/update_album_dto_test.dart
 | 
			
		||||
test/update_asset_dto_test.dart
 | 
			
		||||
test/update_device_info_dto_test.dart
 | 
			
		||||
test/update_tag_dto_test.dart
 | 
			
		||||
test/update_user_dto_test.dart
 | 
			
		||||
test/upsert_device_info_dto_test.dart
 | 
			
		||||
test/usage_by_user_dto_test.dart
 | 
			
		||||
test/user_api_test.dart
 | 
			
		||||
test/user_count_response_dto_test.dart
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								mobile/openapi/README.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								mobile/openapi/README.md
									
									
									
										generated
									
									
									
								
							@@ -101,6 +101,7 @@ Class | Method | HTTP request | Description
 | 
			
		||||
*AuthenticationApi* | [**validateAccessToken**](doc//AuthenticationApi.md#validateaccesstoken) | **POST** /auth/validateToken | 
 | 
			
		||||
*DeviceInfoApi* | [**createDeviceInfo**](doc//DeviceInfoApi.md#createdeviceinfo) | **POST** /device-info | 
 | 
			
		||||
*DeviceInfoApi* | [**updateDeviceInfo**](doc//DeviceInfoApi.md#updatedeviceinfo) | **PATCH** /device-info | 
 | 
			
		||||
*DeviceInfoApi* | [**upsertDeviceInfo**](doc//DeviceInfoApi.md#upsertdeviceinfo) | **PUT** /device-info | 
 | 
			
		||||
*JobApi* | [**getAllJobsStatus**](doc//JobApi.md#getalljobsstatus) | **GET** /jobs | 
 | 
			
		||||
*JobApi* | [**getJobStatus**](doc//JobApi.md#getjobstatus) | **GET** /jobs/{jobId} | 
 | 
			
		||||
*JobApi* | [**sendJobCommand**](doc//JobApi.md#sendjobcommand) | **PUT** /jobs/{jobId} | 
 | 
			
		||||
@@ -149,7 +150,6 @@ Class | Method | HTTP request | Description
 | 
			
		||||
 - [CheckExistingAssetsDto](doc//CheckExistingAssetsDto.md)
 | 
			
		||||
 - [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md)
 | 
			
		||||
 - [CreateAlbumDto](doc//CreateAlbumDto.md)
 | 
			
		||||
 - [CreateDeviceInfoDto](doc//CreateDeviceInfoDto.md)
 | 
			
		||||
 - [CreateProfileImageResponseDto](doc//CreateProfileImageResponseDto.md)
 | 
			
		||||
 - [CreateTagDto](doc//CreateTagDto.md)
 | 
			
		||||
 - [CreateUserDto](doc//CreateUserDto.md)
 | 
			
		||||
@@ -191,9 +191,9 @@ Class | Method | HTTP request | Description
 | 
			
		||||
 - [TimeGroupEnum](doc//TimeGroupEnum.md)
 | 
			
		||||
 - [UpdateAlbumDto](doc//UpdateAlbumDto.md)
 | 
			
		||||
 - [UpdateAssetDto](doc//UpdateAssetDto.md)
 | 
			
		||||
 - [UpdateDeviceInfoDto](doc//UpdateDeviceInfoDto.md)
 | 
			
		||||
 - [UpdateTagDto](doc//UpdateTagDto.md)
 | 
			
		||||
 - [UpdateUserDto](doc//UpdateUserDto.md)
 | 
			
		||||
 - [UpsertDeviceInfoDto](doc//UpsertDeviceInfoDto.md)
 | 
			
		||||
 - [UsageByUserDto](doc//UsageByUserDto.md)
 | 
			
		||||
 - [UserCountResponseDto](doc//UserCountResponseDto.md)
 | 
			
		||||
 - [UserResponseDto](doc//UserResponseDto.md)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										68
									
								
								mobile/openapi/doc/DeviceInfoApi.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										68
									
								
								mobile/openapi/doc/DeviceInfoApi.md
									
									
									
										generated
									
									
									
								
							@@ -11,13 +11,16 @@ Method | HTTP request | Description
 | 
			
		||||
------------- | ------------- | -------------
 | 
			
		||||
[**createDeviceInfo**](DeviceInfoApi.md#createdeviceinfo) | **POST** /device-info | 
 | 
			
		||||
[**updateDeviceInfo**](DeviceInfoApi.md#updatedeviceinfo) | **PATCH** /device-info | 
 | 
			
		||||
[**upsertDeviceInfo**](DeviceInfoApi.md#upsertdeviceinfo) | **PUT** /device-info | 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# **createDeviceInfo**
 | 
			
		||||
> DeviceInfoResponseDto createDeviceInfo(createDeviceInfoDto)
 | 
			
		||||
> DeviceInfoResponseDto createDeviceInfo(upsertDeviceInfoDto)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@deprecated
 | 
			
		||||
 | 
			
		||||
### Example
 | 
			
		||||
```dart
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
@@ -29,10 +32,10 @@ import 'package:openapi/api.dart';
 | 
			
		||||
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
 | 
			
		||||
 | 
			
		||||
final api_instance = DeviceInfoApi();
 | 
			
		||||
final createDeviceInfoDto = CreateDeviceInfoDto(); // CreateDeviceInfoDto | 
 | 
			
		||||
final upsertDeviceInfoDto = UpsertDeviceInfoDto(); // UpsertDeviceInfoDto | 
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
    final result = api_instance.createDeviceInfo(createDeviceInfoDto);
 | 
			
		||||
    final result = api_instance.createDeviceInfo(upsertDeviceInfoDto);
 | 
			
		||||
    print(result);
 | 
			
		||||
} catch (e) {
 | 
			
		||||
    print('Exception when calling DeviceInfoApi->createDeviceInfo: $e\n');
 | 
			
		||||
@@ -43,7 +46,7 @@ try {
 | 
			
		||||
 | 
			
		||||
Name | Type | Description  | Notes
 | 
			
		||||
------------- | ------------- | ------------- | -------------
 | 
			
		||||
 **createDeviceInfoDto** | [**CreateDeviceInfoDto**](CreateDeviceInfoDto.md)|  | 
 | 
			
		||||
 **upsertDeviceInfoDto** | [**UpsertDeviceInfoDto**](UpsertDeviceInfoDto.md)|  | 
 | 
			
		||||
 | 
			
		||||
### Return type
 | 
			
		||||
 | 
			
		||||
@@ -61,10 +64,12 @@ Name | Type | Description  | Notes
 | 
			
		||||
[[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)
 | 
			
		||||
 | 
			
		||||
# **updateDeviceInfo**
 | 
			
		||||
> DeviceInfoResponseDto updateDeviceInfo(updateDeviceInfoDto)
 | 
			
		||||
> DeviceInfoResponseDto updateDeviceInfo(upsertDeviceInfoDto)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@deprecated
 | 
			
		||||
 | 
			
		||||
### Example
 | 
			
		||||
```dart
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
@@ -76,10 +81,10 @@ import 'package:openapi/api.dart';
 | 
			
		||||
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
 | 
			
		||||
 | 
			
		||||
final api_instance = DeviceInfoApi();
 | 
			
		||||
final updateDeviceInfoDto = UpdateDeviceInfoDto(); // UpdateDeviceInfoDto | 
 | 
			
		||||
final upsertDeviceInfoDto = UpsertDeviceInfoDto(); // UpsertDeviceInfoDto | 
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
    final result = api_instance.updateDeviceInfo(updateDeviceInfoDto);
 | 
			
		||||
    final result = api_instance.updateDeviceInfo(upsertDeviceInfoDto);
 | 
			
		||||
    print(result);
 | 
			
		||||
} catch (e) {
 | 
			
		||||
    print('Exception when calling DeviceInfoApi->updateDeviceInfo: $e\n');
 | 
			
		||||
@@ -90,7 +95,54 @@ try {
 | 
			
		||||
 | 
			
		||||
Name | Type | Description  | Notes
 | 
			
		||||
------------- | ------------- | ------------- | -------------
 | 
			
		||||
 **updateDeviceInfoDto** | [**UpdateDeviceInfoDto**](UpdateDeviceInfoDto.md)|  | 
 | 
			
		||||
 **upsertDeviceInfoDto** | [**UpsertDeviceInfoDto**](UpsertDeviceInfoDto.md)|  | 
 | 
			
		||||
 | 
			
		||||
### Return type
 | 
			
		||||
 | 
			
		||||
[**DeviceInfoResponseDto**](DeviceInfoResponseDto.md)
 | 
			
		||||
 | 
			
		||||
### Authorization
 | 
			
		||||
 | 
			
		||||
[bearer](../README.md#bearer)
 | 
			
		||||
 | 
			
		||||
### HTTP request headers
 | 
			
		||||
 | 
			
		||||
 - **Content-Type**: application/json
 | 
			
		||||
 - **Accept**: application/json
 | 
			
		||||
 | 
			
		||||
[[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)
 | 
			
		||||
 | 
			
		||||
# **upsertDeviceInfo**
 | 
			
		||||
> DeviceInfoResponseDto upsertDeviceInfo(upsertDeviceInfoDto)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Example
 | 
			
		||||
```dart
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
// TODO Configure HTTP Bearer authorization: bearer
 | 
			
		||||
// Case 1. Use String Token
 | 
			
		||||
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN');
 | 
			
		||||
// Case 2. Use Function which generate token.
 | 
			
		||||
// String yourTokenGeneratorFunction() { ... }
 | 
			
		||||
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
 | 
			
		||||
 | 
			
		||||
final api_instance = DeviceInfoApi();
 | 
			
		||||
final upsertDeviceInfoDto = UpsertDeviceInfoDto(); // UpsertDeviceInfoDto | 
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
    final result = api_instance.upsertDeviceInfo(upsertDeviceInfoDto);
 | 
			
		||||
    print(result);
 | 
			
		||||
} catch (e) {
 | 
			
		||||
    print('Exception when calling DeviceInfoApi->upsertDeviceInfo: $e\n');
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Parameters
 | 
			
		||||
 | 
			
		||||
Name | Type | Description  | Notes
 | 
			
		||||
------------- | ------------- | ------------- | -------------
 | 
			
		||||
 **upsertDeviceInfoDto** | [**UpsertDeviceInfoDto**](UpsertDeviceInfoDto.md)|  | 
 | 
			
		||||
 | 
			
		||||
### Return type
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								mobile/openapi/doc/UpdateDeviceInfoDto.md
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								mobile/openapi/doc/UpdateDeviceInfoDto.md
									
									
									
										generated
									
									
									
								
							@@ -1,17 +0,0 @@
 | 
			
		||||
# openapi.model.UpdateDeviceInfoDto
 | 
			
		||||
 | 
			
		||||
## Load the model package
 | 
			
		||||
```dart
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Properties
 | 
			
		||||
Name | Type | Description | Notes
 | 
			
		||||
------------ | ------------- | ------------- | -------------
 | 
			
		||||
**deviceType** | [**DeviceTypeEnum**](DeviceTypeEnum.md) |  | 
 | 
			
		||||
**deviceId** | **String** |  | 
 | 
			
		||||
**isAutoBackup** | **bool** |  | [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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
# openapi.model.CreateDeviceInfoDto
 | 
			
		||||
# openapi.model.UpsertDeviceInfoDto
 | 
			
		||||
 | 
			
		||||
## Load the model package
 | 
			
		||||
```dart
 | 
			
		||||
							
								
								
									
										3
									
								
								mobile/openapi/lib/api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3
									
								
								mobile/openapi/lib/api.dart
									
									
									
										generated
									
									
									
								
							@@ -56,7 +56,6 @@ part 'model/check_duplicate_asset_response_dto.dart';
 | 
			
		||||
part 'model/check_existing_assets_dto.dart';
 | 
			
		||||
part 'model/check_existing_assets_response_dto.dart';
 | 
			
		||||
part 'model/create_album_dto.dart';
 | 
			
		||||
part 'model/create_device_info_dto.dart';
 | 
			
		||||
part 'model/create_profile_image_response_dto.dart';
 | 
			
		||||
part 'model/create_tag_dto.dart';
 | 
			
		||||
part 'model/create_user_dto.dart';
 | 
			
		||||
@@ -98,9 +97,9 @@ part 'model/thumbnail_format.dart';
 | 
			
		||||
part 'model/time_group_enum.dart';
 | 
			
		||||
part 'model/update_album_dto.dart';
 | 
			
		||||
part 'model/update_asset_dto.dart';
 | 
			
		||||
part 'model/update_device_info_dto.dart';
 | 
			
		||||
part 'model/update_tag_dto.dart';
 | 
			
		||||
part 'model/update_user_dto.dart';
 | 
			
		||||
part 'model/upsert_device_info_dto.dart';
 | 
			
		||||
part 'model/usage_by_user_dto.dart';
 | 
			
		||||
part 'model/user_count_response_dto.dart';
 | 
			
		||||
part 'model/user_response_dto.dart';
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										93
									
								
								mobile/openapi/lib/api/device_info_api.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										93
									
								
								mobile/openapi/lib/api/device_info_api.dart
									
									
									
										generated
									
									
									
								
							@@ -16,16 +16,21 @@ class DeviceInfoApi {
 | 
			
		||||
 | 
			
		||||
  final ApiClient apiClient;
 | 
			
		||||
 | 
			
		||||
  /// Performs an HTTP 'POST /device-info' operation and returns the [Response].
 | 
			
		||||
  /// 
 | 
			
		||||
  ///
 | 
			
		||||
  /// @deprecated
 | 
			
		||||
  ///
 | 
			
		||||
  /// Note: This method returns the HTTP [Response].
 | 
			
		||||
  ///
 | 
			
		||||
  /// Parameters:
 | 
			
		||||
  ///
 | 
			
		||||
  /// * [CreateDeviceInfoDto] createDeviceInfoDto (required):
 | 
			
		||||
  Future<Response> createDeviceInfoWithHttpInfo(CreateDeviceInfoDto createDeviceInfoDto,) async {
 | 
			
		||||
  /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
 | 
			
		||||
  Future<Response> createDeviceInfoWithHttpInfo(UpsertDeviceInfoDto upsertDeviceInfoDto,) async {
 | 
			
		||||
    // ignore: prefer_const_declarations
 | 
			
		||||
    final path = r'/device-info';
 | 
			
		||||
 | 
			
		||||
    // ignore: prefer_final_locals
 | 
			
		||||
    Object? postBody = createDeviceInfoDto;
 | 
			
		||||
    Object? postBody = upsertDeviceInfoDto;
 | 
			
		||||
 | 
			
		||||
    final queryParams = <QueryParam>[];
 | 
			
		||||
    final headerParams = <String, String>{};
 | 
			
		||||
@@ -45,11 +50,15 @@ class DeviceInfoApi {
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// 
 | 
			
		||||
  ///
 | 
			
		||||
  /// @deprecated
 | 
			
		||||
  ///
 | 
			
		||||
  /// Parameters:
 | 
			
		||||
  ///
 | 
			
		||||
  /// * [CreateDeviceInfoDto] createDeviceInfoDto (required):
 | 
			
		||||
  Future<DeviceInfoResponseDto?> createDeviceInfo(CreateDeviceInfoDto createDeviceInfoDto,) async {
 | 
			
		||||
    final response = await createDeviceInfoWithHttpInfo(createDeviceInfoDto,);
 | 
			
		||||
  /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
 | 
			
		||||
  Future<DeviceInfoResponseDto?> createDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto,) async {
 | 
			
		||||
    final response = await createDeviceInfoWithHttpInfo(upsertDeviceInfoDto,);
 | 
			
		||||
    if (response.statusCode >= HttpStatus.badRequest) {
 | 
			
		||||
      throw ApiException(response.statusCode, await _decodeBodyBytes(response));
 | 
			
		||||
    }
 | 
			
		||||
@@ -63,16 +72,21 @@ class DeviceInfoApi {
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Performs an HTTP 'PATCH /device-info' operation and returns the [Response].
 | 
			
		||||
  /// 
 | 
			
		||||
  ///
 | 
			
		||||
  /// @deprecated
 | 
			
		||||
  ///
 | 
			
		||||
  /// Note: This method returns the HTTP [Response].
 | 
			
		||||
  ///
 | 
			
		||||
  /// Parameters:
 | 
			
		||||
  ///
 | 
			
		||||
  /// * [UpdateDeviceInfoDto] updateDeviceInfoDto (required):
 | 
			
		||||
  Future<Response> updateDeviceInfoWithHttpInfo(UpdateDeviceInfoDto updateDeviceInfoDto,) async {
 | 
			
		||||
  /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
 | 
			
		||||
  Future<Response> updateDeviceInfoWithHttpInfo(UpsertDeviceInfoDto upsertDeviceInfoDto,) async {
 | 
			
		||||
    // ignore: prefer_const_declarations
 | 
			
		||||
    final path = r'/device-info';
 | 
			
		||||
 | 
			
		||||
    // ignore: prefer_final_locals
 | 
			
		||||
    Object? postBody = updateDeviceInfoDto;
 | 
			
		||||
    Object? postBody = upsertDeviceInfoDto;
 | 
			
		||||
 | 
			
		||||
    final queryParams = <QueryParam>[];
 | 
			
		||||
    final headerParams = <String, String>{};
 | 
			
		||||
@@ -92,11 +106,62 @@ class DeviceInfoApi {
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// 
 | 
			
		||||
  ///
 | 
			
		||||
  /// @deprecated
 | 
			
		||||
  ///
 | 
			
		||||
  /// Parameters:
 | 
			
		||||
  ///
 | 
			
		||||
  /// * [UpdateDeviceInfoDto] updateDeviceInfoDto (required):
 | 
			
		||||
  Future<DeviceInfoResponseDto?> updateDeviceInfo(UpdateDeviceInfoDto updateDeviceInfoDto,) async {
 | 
			
		||||
    final response = await updateDeviceInfoWithHttpInfo(updateDeviceInfoDto,);
 | 
			
		||||
  /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
 | 
			
		||||
  Future<DeviceInfoResponseDto?> updateDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto,) async {
 | 
			
		||||
    final response = await updateDeviceInfoWithHttpInfo(upsertDeviceInfoDto,);
 | 
			
		||||
    if (response.statusCode >= HttpStatus.badRequest) {
 | 
			
		||||
      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), 'DeviceInfoResponseDto',) as DeviceInfoResponseDto;
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Performs an HTTP 'PUT /device-info' operation and returns the [Response].
 | 
			
		||||
  /// Parameters:
 | 
			
		||||
  ///
 | 
			
		||||
  /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
 | 
			
		||||
  Future<Response> upsertDeviceInfoWithHttpInfo(UpsertDeviceInfoDto upsertDeviceInfoDto,) async {
 | 
			
		||||
    // ignore: prefer_const_declarations
 | 
			
		||||
    final path = r'/device-info';
 | 
			
		||||
 | 
			
		||||
    // ignore: prefer_final_locals
 | 
			
		||||
    Object? postBody = upsertDeviceInfoDto;
 | 
			
		||||
 | 
			
		||||
    final queryParams = <QueryParam>[];
 | 
			
		||||
    final headerParams = <String, String>{};
 | 
			
		||||
    final formParams = <String, String>{};
 | 
			
		||||
 | 
			
		||||
    const contentTypes = <String>['application/json'];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return apiClient.invokeAPI(
 | 
			
		||||
      path,
 | 
			
		||||
      'PUT',
 | 
			
		||||
      queryParams,
 | 
			
		||||
      postBody,
 | 
			
		||||
      headerParams,
 | 
			
		||||
      formParams,
 | 
			
		||||
      contentTypes.isEmpty ? null : contentTypes.first,
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Parameters:
 | 
			
		||||
  ///
 | 
			
		||||
  /// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
 | 
			
		||||
  Future<DeviceInfoResponseDto?> upsertDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto,) async {
 | 
			
		||||
    final response = await upsertDeviceInfoWithHttpInfo(upsertDeviceInfoDto,);
 | 
			
		||||
    if (response.statusCode >= HttpStatus.badRequest) {
 | 
			
		||||
      throw ApiException(response.statusCode, await _decodeBodyBytes(response));
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								mobile/openapi/lib/api_client.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								mobile/openapi/lib/api_client.dart
									
									
									
										generated
									
									
									
								
							@@ -228,8 +228,6 @@ class ApiClient {
 | 
			
		||||
          return CheckExistingAssetsResponseDto.fromJson(value);
 | 
			
		||||
        case 'CreateAlbumDto':
 | 
			
		||||
          return CreateAlbumDto.fromJson(value);
 | 
			
		||||
        case 'CreateDeviceInfoDto':
 | 
			
		||||
          return CreateDeviceInfoDto.fromJson(value);
 | 
			
		||||
        case 'CreateProfileImageResponseDto':
 | 
			
		||||
          return CreateProfileImageResponseDto.fromJson(value);
 | 
			
		||||
        case 'CreateTagDto':
 | 
			
		||||
@@ -312,12 +310,12 @@ class ApiClient {
 | 
			
		||||
          return UpdateAlbumDto.fromJson(value);
 | 
			
		||||
        case 'UpdateAssetDto':
 | 
			
		||||
          return UpdateAssetDto.fromJson(value);
 | 
			
		||||
        case 'UpdateDeviceInfoDto':
 | 
			
		||||
          return UpdateDeviceInfoDto.fromJson(value);
 | 
			
		||||
        case 'UpdateTagDto':
 | 
			
		||||
          return UpdateTagDto.fromJson(value);
 | 
			
		||||
        case 'UpdateUserDto':
 | 
			
		||||
          return UpdateUserDto.fromJson(value);
 | 
			
		||||
        case 'UpsertDeviceInfoDto':
 | 
			
		||||
          return UpsertDeviceInfoDto.fromJson(value);
 | 
			
		||||
        case 'UsageByUserDto':
 | 
			
		||||
          return UsageByUserDto.fromJson(value);
 | 
			
		||||
        case 'UserCountResponseDto':
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										136
									
								
								mobile/openapi/lib/model/create_device_info_dto.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										136
									
								
								mobile/openapi/lib/model/create_device_info_dto.dart
									
									
									
										generated
									
									
									
								
							@@ -1,136 +0,0 @@
 | 
			
		||||
//
 | 
			
		||||
// AUTO-GENERATED FILE, DO NOT MODIFY!
 | 
			
		||||
//
 | 
			
		||||
// @dart=2.12
 | 
			
		||||
 | 
			
		||||
// ignore_for_file: unused_element, unused_import
 | 
			
		||||
// ignore_for_file: always_put_required_named_parameters_first
 | 
			
		||||
// ignore_for_file: constant_identifier_names
 | 
			
		||||
// ignore_for_file: lines_longer_than_80_chars
 | 
			
		||||
 | 
			
		||||
part of openapi.api;
 | 
			
		||||
 | 
			
		||||
class CreateDeviceInfoDto {
 | 
			
		||||
  /// Returns a new [CreateDeviceInfoDto] instance.
 | 
			
		||||
  CreateDeviceInfoDto({
 | 
			
		||||
    required this.deviceType,
 | 
			
		||||
    required this.deviceId,
 | 
			
		||||
    this.isAutoBackup,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  DeviceTypeEnum deviceType;
 | 
			
		||||
 | 
			
		||||
  String deviceId;
 | 
			
		||||
 | 
			
		||||
  ///
 | 
			
		||||
  /// Please note: This property should have been non-nullable! Since the specification file
 | 
			
		||||
  /// does not include a default value (using the "default:" property), however, the generated
 | 
			
		||||
  /// source code must fall back to having a nullable type.
 | 
			
		||||
  /// Consider adding a "default:" property in the specification file to hide this note.
 | 
			
		||||
  ///
 | 
			
		||||
  bool? isAutoBackup;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  bool operator ==(Object other) => identical(this, other) || other is CreateDeviceInfoDto &&
 | 
			
		||||
     other.deviceType == deviceType &&
 | 
			
		||||
     other.deviceId == deviceId &&
 | 
			
		||||
     other.isAutoBackup == isAutoBackup;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  int get hashCode =>
 | 
			
		||||
    // ignore: unnecessary_parenthesis
 | 
			
		||||
    (deviceType.hashCode) +
 | 
			
		||||
    (deviceId.hashCode) +
 | 
			
		||||
    (isAutoBackup == null ? 0 : isAutoBackup!.hashCode);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String toString() => 'CreateDeviceInfoDto[deviceType=$deviceType, deviceId=$deviceId, isAutoBackup=$isAutoBackup]';
 | 
			
		||||
 | 
			
		||||
  Map<String, dynamic> toJson() {
 | 
			
		||||
    final _json = <String, dynamic>{};
 | 
			
		||||
      _json[r'deviceType'] = deviceType;
 | 
			
		||||
      _json[r'deviceId'] = deviceId;
 | 
			
		||||
    if (isAutoBackup != null) {
 | 
			
		||||
      _json[r'isAutoBackup'] = isAutoBackup;
 | 
			
		||||
    } else {
 | 
			
		||||
      _json[r'isAutoBackup'] = null;
 | 
			
		||||
    }
 | 
			
		||||
    return _json;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Returns a new [CreateDeviceInfoDto] instance and imports its values from
 | 
			
		||||
  /// [value] if it's a [Map], null otherwise.
 | 
			
		||||
  // ignore: prefer_constructors_over_static_methods
 | 
			
		||||
  static CreateDeviceInfoDto? fromJson(dynamic value) {
 | 
			
		||||
    if (value is Map) {
 | 
			
		||||
      final json = value.cast<String, dynamic>();
 | 
			
		||||
 | 
			
		||||
      // Ensure that the map contains the required keys.
 | 
			
		||||
      // Note 1: the values aren't checked for validity beyond being non-null.
 | 
			
		||||
      // Note 2: this code is stripped in release mode!
 | 
			
		||||
      assert(() {
 | 
			
		||||
        requiredKeys.forEach((key) {
 | 
			
		||||
          assert(json.containsKey(key), 'Required key "CreateDeviceInfoDto[$key]" is missing from JSON.');
 | 
			
		||||
          assert(json[key] != null, 'Required key "CreateDeviceInfoDto[$key]" has a null value in JSON.');
 | 
			
		||||
        });
 | 
			
		||||
        return true;
 | 
			
		||||
      }());
 | 
			
		||||
 | 
			
		||||
      return CreateDeviceInfoDto(
 | 
			
		||||
        deviceType: DeviceTypeEnum.fromJson(json[r'deviceType'])!,
 | 
			
		||||
        deviceId: mapValueOfType<String>(json, r'deviceId')!,
 | 
			
		||||
        isAutoBackup: mapValueOfType<bool>(json, r'isAutoBackup'),
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static List<CreateDeviceInfoDto>? listFromJson(dynamic json, {bool growable = false,}) {
 | 
			
		||||
    final result = <CreateDeviceInfoDto>[];
 | 
			
		||||
    if (json is List && json.isNotEmpty) {
 | 
			
		||||
      for (final row in json) {
 | 
			
		||||
        final value = CreateDeviceInfoDto.fromJson(row);
 | 
			
		||||
        if (value != null) {
 | 
			
		||||
          result.add(value);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return result.toList(growable: growable);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static Map<String, CreateDeviceInfoDto> mapFromJson(dynamic json) {
 | 
			
		||||
    final map = <String, CreateDeviceInfoDto>{};
 | 
			
		||||
    if (json is Map && json.isNotEmpty) {
 | 
			
		||||
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
 | 
			
		||||
      for (final entry in json.entries) {
 | 
			
		||||
        final value = CreateDeviceInfoDto.fromJson(entry.value);
 | 
			
		||||
        if (value != null) {
 | 
			
		||||
          map[entry.key] = value;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return map;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // maps a json object with a list of CreateDeviceInfoDto-objects as value to a dart map
 | 
			
		||||
  static Map<String, List<CreateDeviceInfoDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
 | 
			
		||||
    final map = <String, List<CreateDeviceInfoDto>>{};
 | 
			
		||||
    if (json is Map && json.isNotEmpty) {
 | 
			
		||||
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
 | 
			
		||||
      for (final entry in json.entries) {
 | 
			
		||||
        final value = CreateDeviceInfoDto.listFromJson(entry.value, growable: growable,);
 | 
			
		||||
        if (value != null) {
 | 
			
		||||
          map[entry.key] = value;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return map;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// The list of required keys that must be present in a JSON.
 | 
			
		||||
  static const requiredKeys = <String>{
 | 
			
		||||
    'deviceType',
 | 
			
		||||
    'deviceId',
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -10,9 +10,9 @@
 | 
			
		||||
 | 
			
		||||
part of openapi.api;
 | 
			
		||||
 | 
			
		||||
class UpdateDeviceInfoDto {
 | 
			
		||||
  /// Returns a new [UpdateDeviceInfoDto] instance.
 | 
			
		||||
  UpdateDeviceInfoDto({
 | 
			
		||||
class UpsertDeviceInfoDto {
 | 
			
		||||
  /// Returns a new [UpsertDeviceInfoDto] instance.
 | 
			
		||||
  UpsertDeviceInfoDto({
 | 
			
		||||
    required this.deviceType,
 | 
			
		||||
    required this.deviceId,
 | 
			
		||||
    this.isAutoBackup,
 | 
			
		||||
@@ -31,7 +31,7 @@ class UpdateDeviceInfoDto {
 | 
			
		||||
  bool? isAutoBackup;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  bool operator ==(Object other) => identical(this, other) || other is UpdateDeviceInfoDto &&
 | 
			
		||||
  bool operator ==(Object other) => identical(this, other) || other is UpsertDeviceInfoDto &&
 | 
			
		||||
     other.deviceType == deviceType &&
 | 
			
		||||
     other.deviceId == deviceId &&
 | 
			
		||||
     other.isAutoBackup == isAutoBackup;
 | 
			
		||||
@@ -44,7 +44,7 @@ class UpdateDeviceInfoDto {
 | 
			
		||||
    (isAutoBackup == null ? 0 : isAutoBackup!.hashCode);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String toString() => 'UpdateDeviceInfoDto[deviceType=$deviceType, deviceId=$deviceId, isAutoBackup=$isAutoBackup]';
 | 
			
		||||
  String toString() => 'UpsertDeviceInfoDto[deviceType=$deviceType, deviceId=$deviceId, isAutoBackup=$isAutoBackup]';
 | 
			
		||||
 | 
			
		||||
  Map<String, dynamic> toJson() {
 | 
			
		||||
    final _json = <String, dynamic>{};
 | 
			
		||||
@@ -58,10 +58,10 @@ class UpdateDeviceInfoDto {
 | 
			
		||||
    return _json;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Returns a new [UpdateDeviceInfoDto] instance and imports its values from
 | 
			
		||||
  /// Returns a new [UpsertDeviceInfoDto] instance and imports its values from
 | 
			
		||||
  /// [value] if it's a [Map], null otherwise.
 | 
			
		||||
  // ignore: prefer_constructors_over_static_methods
 | 
			
		||||
  static UpdateDeviceInfoDto? fromJson(dynamic value) {
 | 
			
		||||
  static UpsertDeviceInfoDto? fromJson(dynamic value) {
 | 
			
		||||
    if (value is Map) {
 | 
			
		||||
      final json = value.cast<String, dynamic>();
 | 
			
		||||
 | 
			
		||||
@@ -70,13 +70,13 @@ class UpdateDeviceInfoDto {
 | 
			
		||||
      // Note 2: this code is stripped in release mode!
 | 
			
		||||
      assert(() {
 | 
			
		||||
        requiredKeys.forEach((key) {
 | 
			
		||||
          assert(json.containsKey(key), 'Required key "UpdateDeviceInfoDto[$key]" is missing from JSON.');
 | 
			
		||||
          assert(json[key] != null, 'Required key "UpdateDeviceInfoDto[$key]" has a null value in JSON.');
 | 
			
		||||
          assert(json.containsKey(key), 'Required key "UpsertDeviceInfoDto[$key]" is missing from JSON.');
 | 
			
		||||
          assert(json[key] != null, 'Required key "UpsertDeviceInfoDto[$key]" has a null value in JSON.');
 | 
			
		||||
        });
 | 
			
		||||
        return true;
 | 
			
		||||
      }());
 | 
			
		||||
 | 
			
		||||
      return UpdateDeviceInfoDto(
 | 
			
		||||
      return UpsertDeviceInfoDto(
 | 
			
		||||
        deviceType: DeviceTypeEnum.fromJson(json[r'deviceType'])!,
 | 
			
		||||
        deviceId: mapValueOfType<String>(json, r'deviceId')!,
 | 
			
		||||
        isAutoBackup: mapValueOfType<bool>(json, r'isAutoBackup'),
 | 
			
		||||
@@ -85,11 +85,11 @@ class UpdateDeviceInfoDto {
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static List<UpdateDeviceInfoDto>? listFromJson(dynamic json, {bool growable = false,}) {
 | 
			
		||||
    final result = <UpdateDeviceInfoDto>[];
 | 
			
		||||
  static List<UpsertDeviceInfoDto>? listFromJson(dynamic json, {bool growable = false,}) {
 | 
			
		||||
    final result = <UpsertDeviceInfoDto>[];
 | 
			
		||||
    if (json is List && json.isNotEmpty) {
 | 
			
		||||
      for (final row in json) {
 | 
			
		||||
        final value = UpdateDeviceInfoDto.fromJson(row);
 | 
			
		||||
        final value = UpsertDeviceInfoDto.fromJson(row);
 | 
			
		||||
        if (value != null) {
 | 
			
		||||
          result.add(value);
 | 
			
		||||
        }
 | 
			
		||||
@@ -98,12 +98,12 @@ class UpdateDeviceInfoDto {
 | 
			
		||||
    return result.toList(growable: growable);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static Map<String, UpdateDeviceInfoDto> mapFromJson(dynamic json) {
 | 
			
		||||
    final map = <String, UpdateDeviceInfoDto>{};
 | 
			
		||||
  static Map<String, UpsertDeviceInfoDto> mapFromJson(dynamic json) {
 | 
			
		||||
    final map = <String, UpsertDeviceInfoDto>{};
 | 
			
		||||
    if (json is Map && json.isNotEmpty) {
 | 
			
		||||
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
 | 
			
		||||
      for (final entry in json.entries) {
 | 
			
		||||
        final value = UpdateDeviceInfoDto.fromJson(entry.value);
 | 
			
		||||
        final value = UpsertDeviceInfoDto.fromJson(entry.value);
 | 
			
		||||
        if (value != null) {
 | 
			
		||||
          map[entry.key] = value;
 | 
			
		||||
        }
 | 
			
		||||
@@ -112,13 +112,13 @@ class UpdateDeviceInfoDto {
 | 
			
		||||
    return map;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // maps a json object with a list of UpdateDeviceInfoDto-objects as value to a dart map
 | 
			
		||||
  static Map<String, List<UpdateDeviceInfoDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
 | 
			
		||||
    final map = <String, List<UpdateDeviceInfoDto>>{};
 | 
			
		||||
  // maps a json object with a list of UpsertDeviceInfoDto-objects as value to a dart map
 | 
			
		||||
  static Map<String, List<UpsertDeviceInfoDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
 | 
			
		||||
    final map = <String, List<UpsertDeviceInfoDto>>{};
 | 
			
		||||
    if (json is Map && json.isNotEmpty) {
 | 
			
		||||
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
 | 
			
		||||
      for (final entry in json.entries) {
 | 
			
		||||
        final value = UpdateDeviceInfoDto.listFromJson(entry.value, growable: growable,);
 | 
			
		||||
        final value = UpsertDeviceInfoDto.listFromJson(entry.value, growable: growable,);
 | 
			
		||||
        if (value != null) {
 | 
			
		||||
          map[entry.key] = value;
 | 
			
		||||
        }
 | 
			
		||||
							
								
								
									
										17
									
								
								mobile/openapi/test/device_info_api_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								mobile/openapi/test/device_info_api_test.dart
									
									
									
										generated
									
									
									
								
							@@ -17,15 +17,28 @@ void main() {
 | 
			
		||||
  // final instance = DeviceInfoApi();
 | 
			
		||||
 | 
			
		||||
  group('tests for DeviceInfoApi', () {
 | 
			
		||||
    //Future<DeviceInfoResponseDto> createDeviceInfo(CreateDeviceInfoDto createDeviceInfoDto) async
 | 
			
		||||
    // 
 | 
			
		||||
    //
 | 
			
		||||
    // @deprecated
 | 
			
		||||
    //
 | 
			
		||||
    //Future<DeviceInfoResponseDto> createDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto) async
 | 
			
		||||
    test('test createDeviceInfo', () async {
 | 
			
		||||
      // TODO
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    //Future<DeviceInfoResponseDto> updateDeviceInfo(UpdateDeviceInfoDto updateDeviceInfoDto) async
 | 
			
		||||
    // 
 | 
			
		||||
    //
 | 
			
		||||
    // @deprecated
 | 
			
		||||
    //
 | 
			
		||||
    //Future<DeviceInfoResponseDto> updateDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto) async
 | 
			
		||||
    test('test updateDeviceInfo', () async {
 | 
			
		||||
      // TODO
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    //Future<DeviceInfoResponseDto> upsertDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto) async
 | 
			
		||||
    test('test upsertDeviceInfo', () async {
 | 
			
		||||
      // TODO
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								mobile/openapi/test/update_device_info_dto_test.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										37
									
								
								mobile/openapi/test/update_device_info_dto_test.dart
									
									
									
										generated
									
									
									
								
							@@ -1,37 +0,0 @@
 | 
			
		||||
//
 | 
			
		||||
// AUTO-GENERATED FILE, DO NOT MODIFY!
 | 
			
		||||
//
 | 
			
		||||
// @dart=2.12
 | 
			
		||||
 | 
			
		||||
// ignore_for_file: unused_element, unused_import
 | 
			
		||||
// ignore_for_file: always_put_required_named_parameters_first
 | 
			
		||||
// ignore_for_file: constant_identifier_names
 | 
			
		||||
// ignore_for_file: lines_longer_than_80_chars
 | 
			
		||||
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
import 'package:test/test.dart';
 | 
			
		||||
 | 
			
		||||
// tests for UpdateDeviceInfoDto
 | 
			
		||||
void main() {
 | 
			
		||||
  // final instance = UpdateDeviceInfoDto();
 | 
			
		||||
 | 
			
		||||
  group('test UpdateDeviceInfoDto', () {
 | 
			
		||||
    // DeviceTypeEnum deviceType
 | 
			
		||||
    test('to test the property `deviceType`', () async {
 | 
			
		||||
      // TODO
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // String deviceId
 | 
			
		||||
    test('to test the property `deviceId`', () async {
 | 
			
		||||
      // TODO
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // bool isAutoBackup
 | 
			
		||||
    test('to test the property `isAutoBackup`', () async {
 | 
			
		||||
      // TODO
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -11,11 +11,11 @@
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
import 'package:test/test.dart';
 | 
			
		||||
 | 
			
		||||
// tests for CreateDeviceInfoDto
 | 
			
		||||
// tests for UpsertDeviceInfoDto
 | 
			
		||||
void main() {
 | 
			
		||||
  // final instance = CreateDeviceInfoDto();
 | 
			
		||||
  // final instance = UpsertDeviceInfoDto();
 | 
			
		||||
 | 
			
		||||
  group('test CreateDeviceInfoDto', () {
 | 
			
		||||
  group('test UpsertDeviceInfoDto', () {
 | 
			
		||||
    // DeviceTypeEnum deviceType
 | 
			
		||||
    test('to test the property `deviceType`', () async {
 | 
			
		||||
      // TODO
 | 
			
		||||
@@ -1,11 +1,10 @@
 | 
			
		||||
import { Controller, Post, Body, Patch, ValidationPipe } from '@nestjs/common';
 | 
			
		||||
import { Body, Controller, Patch, Post, Put, ValidationPipe } from '@nestjs/common';
 | 
			
		||||
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
 | 
			
		||||
import { AuthUserDto, GetAuthUser } from '../../decorators/auth-user.decorator';
 | 
			
		||||
import { Authenticated } from '../../decorators/authenticated.decorator';
 | 
			
		||||
import { DeviceInfoService } from './device-info.service';
 | 
			
		||||
import { CreateDeviceInfoDto } from './dto/create-device-info.dto';
 | 
			
		||||
import { UpdateDeviceInfoDto } from './dto/update-device-info.dto';
 | 
			
		||||
import { DeviceInfoResponseDto } from './response-dto/create-device-info-response.dto';
 | 
			
		||||
import { UpsertDeviceInfoDto } from './dto/upsert-device-info.dto';
 | 
			
		||||
import { DeviceInfoResponseDto, mapDeviceInfoResponse } from './response-dto/device-info-response.dto';
 | 
			
		||||
 | 
			
		||||
@Authenticated()
 | 
			
		||||
@ApiBearerAuth()
 | 
			
		||||
@@ -14,19 +13,30 @@ import { DeviceInfoResponseDto } from './response-dto/create-device-info-respons
 | 
			
		||||
export class DeviceInfoController {
 | 
			
		||||
  constructor(private readonly deviceInfoService: DeviceInfoService) {}
 | 
			
		||||
 | 
			
		||||
  /** @deprecated */
 | 
			
		||||
  @Post()
 | 
			
		||||
  async createDeviceInfo(
 | 
			
		||||
    @Body(ValidationPipe) createDeviceInfoDto: CreateDeviceInfoDto,
 | 
			
		||||
    @GetAuthUser() authUser: AuthUserDto,
 | 
			
		||||
  public async createDeviceInfo(
 | 
			
		||||
    @GetAuthUser() user: AuthUserDto,
 | 
			
		||||
    @Body(ValidationPipe) dto: UpsertDeviceInfoDto,
 | 
			
		||||
  ): Promise<DeviceInfoResponseDto> {
 | 
			
		||||
    return this.deviceInfoService.create(createDeviceInfoDto, authUser);
 | 
			
		||||
    return this.upsertDeviceInfo(user, dto);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /** @deprecated */
 | 
			
		||||
  @Patch()
 | 
			
		||||
  async updateDeviceInfo(
 | 
			
		||||
    @Body(ValidationPipe) updateDeviceInfoDto: UpdateDeviceInfoDto,
 | 
			
		||||
    @GetAuthUser() authUser: AuthUserDto,
 | 
			
		||||
  public async updateDeviceInfo(
 | 
			
		||||
    @GetAuthUser() user: AuthUserDto,
 | 
			
		||||
    @Body(ValidationPipe) dto: UpsertDeviceInfoDto,
 | 
			
		||||
  ): Promise<DeviceInfoResponseDto> {
 | 
			
		||||
    return this.deviceInfoService.update(authUser.id, updateDeviceInfoDto);
 | 
			
		||||
    return this.upsertDeviceInfo(user, dto);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Put()
 | 
			
		||||
  public async upsertDeviceInfo(
 | 
			
		||||
    @GetAuthUser() user: AuthUserDto,
 | 
			
		||||
    @Body(ValidationPipe) dto: UpsertDeviceInfoDto,
 | 
			
		||||
  ): Promise<DeviceInfoResponseDto> {
 | 
			
		||||
    const deviceInfo = await this.deviceInfoService.upsert({ ...dto, userId: user.id });
 | 
			
		||||
    return mapDeviceInfoResponse(deviceInfo);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,65 @@
 | 
			
		||||
import { DeviceInfoEntity, DeviceType } from '@app/database/entities/device-info.entity';
 | 
			
		||||
import { Repository } from 'typeorm';
 | 
			
		||||
import { DeviceInfoService } from './device-info.service';
 | 
			
		||||
 | 
			
		||||
const deviceId = 'device-123';
 | 
			
		||||
const userId = 'user-123';
 | 
			
		||||
 | 
			
		||||
describe('DeviceInfoService', () => {
 | 
			
		||||
  let sut: DeviceInfoService;
 | 
			
		||||
  let repositoryMock: jest.Mocked<Repository<DeviceInfoEntity>>;
 | 
			
		||||
 | 
			
		||||
  beforeEach(async () => {
 | 
			
		||||
    repositoryMock = {
 | 
			
		||||
      findOne: jest.fn(),
 | 
			
		||||
      save: jest.fn(),
 | 
			
		||||
    } as unknown as jest.Mocked<Repository<DeviceInfoEntity>>;
 | 
			
		||||
 | 
			
		||||
    sut = new DeviceInfoService(repositoryMock);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should be defined', () => {
 | 
			
		||||
    expect(sut).toBeDefined();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('upsert', () => {
 | 
			
		||||
    it('should create a new record', async () => {
 | 
			
		||||
      const request = { deviceId, userId, deviceType: DeviceType.IOS } as DeviceInfoEntity;
 | 
			
		||||
      const response = { ...request, id: 1 } as DeviceInfoEntity;
 | 
			
		||||
 | 
			
		||||
      repositoryMock.findOne.mockResolvedValue(null);
 | 
			
		||||
      repositoryMock.save.mockResolvedValue(response);
 | 
			
		||||
 | 
			
		||||
      await expect(sut.upsert(request)).resolves.toEqual(response);
 | 
			
		||||
 | 
			
		||||
      expect(repositoryMock.findOne).toHaveBeenCalledTimes(1);
 | 
			
		||||
      expect(repositoryMock.save).toHaveBeenCalledTimes(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should update an existing record', async () => {
 | 
			
		||||
      const request = { deviceId, userId, deviceType: DeviceType.IOS, isAutoBackup: true } as DeviceInfoEntity;
 | 
			
		||||
      const response = { ...request, id: 1 } as DeviceInfoEntity;
 | 
			
		||||
 | 
			
		||||
      repositoryMock.findOne.mockResolvedValue(response);
 | 
			
		||||
      repositoryMock.save.mockResolvedValue(response);
 | 
			
		||||
 | 
			
		||||
      await expect(sut.upsert(request)).resolves.toEqual(response);
 | 
			
		||||
 | 
			
		||||
      expect(repositoryMock.findOne).toHaveBeenCalledTimes(1);
 | 
			
		||||
      expect(repositoryMock.save).toHaveBeenCalledTimes(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should keep properties that were not updated', async () => {
 | 
			
		||||
      const request = { deviceId, userId } as DeviceInfoEntity;
 | 
			
		||||
      const response = { id: 1, isAutoBackup: true, deviceId, userId, deviceType: DeviceType.WEB } as DeviceInfoEntity;
 | 
			
		||||
 | 
			
		||||
      repositoryMock.findOne.mockResolvedValue(response);
 | 
			
		||||
      repositoryMock.save.mockResolvedValue(response);
 | 
			
		||||
 | 
			
		||||
      await expect(sut.upsert(request)).resolves.toEqual(response);
 | 
			
		||||
 | 
			
		||||
      expect(repositoryMock.findOne).toHaveBeenCalledTimes(1);
 | 
			
		||||
      expect(repositoryMock.save).toHaveBeenCalledTimes(1);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
@@ -1,70 +1,29 @@
 | 
			
		||||
import { BadRequestException, Injectable, Logger, NotFoundException } from '@nestjs/common';
 | 
			
		||||
import { DeviceInfoEntity } from '@app/database/entities/device-info.entity';
 | 
			
		||||
import { Injectable } from '@nestjs/common';
 | 
			
		||||
import { InjectRepository } from '@nestjs/typeorm';
 | 
			
		||||
import { Repository } from 'typeorm';
 | 
			
		||||
import { AuthUserDto } from '../../decorators/auth-user.decorator';
 | 
			
		||||
import { CreateDeviceInfoDto } from './dto/create-device-info.dto';
 | 
			
		||||
import { UpdateDeviceInfoDto } from './dto/update-device-info.dto';
 | 
			
		||||
import { DeviceInfoEntity } from '@app/database/entities/device-info.entity';
 | 
			
		||||
import { DeviceInfoResponseDto, mapDeviceInfoResponse } from './response-dto/create-device-info-response.dto';
 | 
			
		||||
 | 
			
		||||
type EntityKeys = Pick<DeviceInfoEntity, 'deviceId' | 'userId'>;
 | 
			
		||||
type Entity = EntityKeys & Partial<DeviceInfoEntity>;
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
export class DeviceInfoService {
 | 
			
		||||
  constructor(
 | 
			
		||||
    @InjectRepository(DeviceInfoEntity)
 | 
			
		||||
    private deviceRepository: Repository<DeviceInfoEntity>,
 | 
			
		||||
    private repository: Repository<DeviceInfoEntity>,
 | 
			
		||||
  ) {}
 | 
			
		||||
 | 
			
		||||
  async create(createDeviceInfoDto: CreateDeviceInfoDto, authUser: AuthUserDto): Promise<DeviceInfoResponseDto> {
 | 
			
		||||
    const res = await this.deviceRepository.findOne({
 | 
			
		||||
      where: {
 | 
			
		||||
        deviceId: createDeviceInfoDto.deviceId,
 | 
			
		||||
        userId: authUser.id,
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
  public async upsert(entity: Entity): Promise<DeviceInfoEntity> {
 | 
			
		||||
    const { deviceId, userId } = entity;
 | 
			
		||||
    const exists = await this.repository.findOne({ where: { userId, deviceId } });
 | 
			
		||||
 | 
			
		||||
    if (res) {
 | 
			
		||||
      Logger.log('Device Info Exist', 'createDeviceInfo');
 | 
			
		||||
      return mapDeviceInfoResponse(res);
 | 
			
		||||
    if (!exists) {
 | 
			
		||||
      return await this.repository.save(entity);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const deviceInfo = new DeviceInfoEntity();
 | 
			
		||||
    deviceInfo.deviceId = createDeviceInfoDto.deviceId;
 | 
			
		||||
    deviceInfo.deviceType = createDeviceInfoDto.deviceType;
 | 
			
		||||
    deviceInfo.userId = authUser.id;
 | 
			
		||||
    exists.isAutoBackup = entity.isAutoBackup ?? exists.isAutoBackup;
 | 
			
		||||
    exists.deviceType = entity.deviceType ?? exists.deviceType;
 | 
			
		||||
 | 
			
		||||
    const newDeviceInfo = await this.deviceRepository.save(deviceInfo);
 | 
			
		||||
 | 
			
		||||
    return mapDeviceInfoResponse(newDeviceInfo);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async update(userId: string, updateDeviceInfoDto: UpdateDeviceInfoDto): Promise<DeviceInfoResponseDto> {
 | 
			
		||||
    const deviceInfo = await this.deviceRepository.findOne({
 | 
			
		||||
      where: { deviceId: updateDeviceInfoDto.deviceId, userId: userId },
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if (!deviceInfo) {
 | 
			
		||||
      throw new NotFoundException('Device Not Found');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const res = await this.deviceRepository.update(
 | 
			
		||||
      {
 | 
			
		||||
        id: deviceInfo.id,
 | 
			
		||||
      },
 | 
			
		||||
      updateDeviceInfoDto,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    if (res.affected == 1) {
 | 
			
		||||
      const updatedDeviceInfo = await this.deviceRepository.findOne({
 | 
			
		||||
        where: { deviceId: updateDeviceInfoDto.deviceId, userId: userId },
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      if (!updatedDeviceInfo) {
 | 
			
		||||
        throw new NotFoundException('Device Not Found');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return mapDeviceInfoResponse(updatedDeviceInfo);
 | 
			
		||||
    } else {
 | 
			
		||||
      throw new BadRequestException('Bad Request');
 | 
			
		||||
    }
 | 
			
		||||
    return await this.repository.save(exists);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
import { DeviceType } from '@app/database/entities/device-info.entity';
 | 
			
		||||
import { ApiProperty } from '@nestjs/swagger';
 | 
			
		||||
import { IsNotEmpty, IsOptional } from 'class-validator';
 | 
			
		||||
 | 
			
		||||
export class UpdateDeviceInfoDto {
 | 
			
		||||
  @IsNotEmpty()
 | 
			
		||||
  deviceId!: string;
 | 
			
		||||
 | 
			
		||||
  @IsNotEmpty()
 | 
			
		||||
  @ApiProperty({ enumName: 'DeviceTypeEnum', enum: DeviceType })
 | 
			
		||||
  deviceType!: DeviceType;
 | 
			
		||||
 | 
			
		||||
  @IsOptional()
 | 
			
		||||
  isAutoBackup?: boolean;
 | 
			
		||||
}
 | 
			
		||||
@@ -2,7 +2,7 @@ import { IsNotEmpty, IsOptional } from 'class-validator';
 | 
			
		||||
import { DeviceType } from '@app/database/entities/device-info.entity';
 | 
			
		||||
import { ApiProperty } from '@nestjs/swagger';
 | 
			
		||||
 | 
			
		||||
export class CreateDeviceInfoDto {
 | 
			
		||||
export class UpsertDeviceInfoDto {
 | 
			
		||||
  @IsNotEmpty()
 | 
			
		||||
  deviceId!: string;
 | 
			
		||||
 | 
			
		||||
@@ -1783,13 +1783,15 @@
 | 
			
		||||
    "/device-info": {
 | 
			
		||||
      "post": {
 | 
			
		||||
        "operationId": "createDeviceInfo",
 | 
			
		||||
        "summary": "",
 | 
			
		||||
        "description": "@deprecated",
 | 
			
		||||
        "parameters": [],
 | 
			
		||||
        "requestBody": {
 | 
			
		||||
          "required": true,
 | 
			
		||||
          "content": {
 | 
			
		||||
            "application/json": {
 | 
			
		||||
              "schema": {
 | 
			
		||||
                "$ref": "#/components/schemas/CreateDeviceInfoDto"
 | 
			
		||||
                "$ref": "#/components/schemas/UpsertDeviceInfoDto"
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
@@ -1817,13 +1819,49 @@
 | 
			
		||||
      },
 | 
			
		||||
      "patch": {
 | 
			
		||||
        "operationId": "updateDeviceInfo",
 | 
			
		||||
        "summary": "",
 | 
			
		||||
        "description": "@deprecated",
 | 
			
		||||
        "parameters": [],
 | 
			
		||||
        "requestBody": {
 | 
			
		||||
          "required": true,
 | 
			
		||||
          "content": {
 | 
			
		||||
            "application/json": {
 | 
			
		||||
              "schema": {
 | 
			
		||||
                "$ref": "#/components/schemas/UpdateDeviceInfoDto"
 | 
			
		||||
                "$ref": "#/components/schemas/UpsertDeviceInfoDto"
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "responses": {
 | 
			
		||||
          "200": {
 | 
			
		||||
            "description": "",
 | 
			
		||||
            "content": {
 | 
			
		||||
              "application/json": {
 | 
			
		||||
                "schema": {
 | 
			
		||||
                  "$ref": "#/components/schemas/DeviceInfoResponseDto"
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "tags": [
 | 
			
		||||
          "Device Info"
 | 
			
		||||
        ],
 | 
			
		||||
        "security": [
 | 
			
		||||
          {
 | 
			
		||||
            "bearer": []
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "put": {
 | 
			
		||||
        "operationId": "upsertDeviceInfo",
 | 
			
		||||
        "parameters": [],
 | 
			
		||||
        "requestBody": {
 | 
			
		||||
          "required": true,
 | 
			
		||||
          "content": {
 | 
			
		||||
            "application/json": {
 | 
			
		||||
              "schema": {
 | 
			
		||||
                "$ref": "#/components/schemas/UpsertDeviceInfoDto"
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
@@ -3227,7 +3265,7 @@
 | 
			
		||||
          "WEB"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "CreateDeviceInfoDto": {
 | 
			
		||||
      "UpsertDeviceInfoDto": {
 | 
			
		||||
        "type": "object",
 | 
			
		||||
        "properties": {
 | 
			
		||||
          "deviceType": {
 | 
			
		||||
@@ -3276,24 +3314,6 @@
 | 
			
		||||
          "isAutoBackup"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "UpdateDeviceInfoDto": {
 | 
			
		||||
        "type": "object",
 | 
			
		||||
        "properties": {
 | 
			
		||||
          "deviceType": {
 | 
			
		||||
            "$ref": "#/components/schemas/DeviceTypeEnum"
 | 
			
		||||
          },
 | 
			
		||||
          "deviceId": {
 | 
			
		||||
            "type": "string"
 | 
			
		||||
          },
 | 
			
		||||
          "isAutoBackup": {
 | 
			
		||||
            "type": "boolean"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "required": [
 | 
			
		||||
          "deviceType",
 | 
			
		||||
          "deviceId"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "ServerInfoResponseDto": {
 | 
			
		||||
        "type": "object",
 | 
			
		||||
        "properties": {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										218
									
								
								web/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										218
									
								
								web/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							@@ -564,31 +564,6 @@ export interface CreateAlbumDto {
 | 
			
		||||
     */
 | 
			
		||||
    'assetIds'?: Array<string>;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * @export
 | 
			
		||||
 * @interface CreateDeviceInfoDto
 | 
			
		||||
 */
 | 
			
		||||
export interface CreateDeviceInfoDto {
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {DeviceTypeEnum}
 | 
			
		||||
     * @memberof CreateDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'deviceType': DeviceTypeEnum;
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {string}
 | 
			
		||||
     * @memberof CreateDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'deviceId': string;
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {boolean}
 | 
			
		||||
     * @memberof CreateDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'isAutoBackup'?: boolean;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * @export
 | 
			
		||||
@@ -1629,31 +1604,6 @@ export interface UpdateAssetDto {
 | 
			
		||||
     */
 | 
			
		||||
    'isFavorite'?: boolean;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * @export
 | 
			
		||||
 * @interface UpdateDeviceInfoDto
 | 
			
		||||
 */
 | 
			
		||||
export interface UpdateDeviceInfoDto {
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {DeviceTypeEnum}
 | 
			
		||||
     * @memberof UpdateDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'deviceType': DeviceTypeEnum;
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {string}
 | 
			
		||||
     * @memberof UpdateDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'deviceId': string;
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {boolean}
 | 
			
		||||
     * @memberof UpdateDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'isAutoBackup'?: boolean;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * @export
 | 
			
		||||
@@ -1722,6 +1672,31 @@ export interface UpdateUserDto {
 | 
			
		||||
     */
 | 
			
		||||
    'profileImagePath'?: string;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * @export
 | 
			
		||||
 * @interface UpsertDeviceInfoDto
 | 
			
		||||
 */
 | 
			
		||||
export interface UpsertDeviceInfoDto {
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {DeviceTypeEnum}
 | 
			
		||||
     * @memberof UpsertDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'deviceType': DeviceTypeEnum;
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {string}
 | 
			
		||||
     * @memberof UpsertDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'deviceId': string;
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @type {boolean}
 | 
			
		||||
     * @memberof UpsertDeviceInfoDto
 | 
			
		||||
     */
 | 
			
		||||
    'isAutoBackup'?: boolean;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * @export
 | 
			
		||||
@@ -4321,14 +4296,15 @@ export class AuthenticationApi extends BaseAPI {
 | 
			
		||||
export const DeviceInfoApiAxiosParamCreator = function (configuration?: Configuration) {
 | 
			
		||||
    return {
 | 
			
		||||
        /**
 | 
			
		||||
         * 
 | 
			
		||||
         * @param {CreateDeviceInfoDto} createDeviceInfoDto 
 | 
			
		||||
         * @deprecated
 | 
			
		||||
         * @summary 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        createDeviceInfo: async (createDeviceInfoDto: CreateDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
 | 
			
		||||
            // verify required parameter 'createDeviceInfoDto' is not null or undefined
 | 
			
		||||
            assertParamExists('createDeviceInfo', 'createDeviceInfoDto', createDeviceInfoDto)
 | 
			
		||||
        createDeviceInfo: async (upsertDeviceInfoDto: UpsertDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
 | 
			
		||||
            // verify required parameter 'upsertDeviceInfoDto' is not null or undefined
 | 
			
		||||
            assertParamExists('createDeviceInfo', 'upsertDeviceInfoDto', upsertDeviceInfoDto)
 | 
			
		||||
            const localVarPath = `/device-info`;
 | 
			
		||||
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
 | 
			
		||||
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
 | 
			
		||||
@@ -4352,7 +4328,7 @@ export const DeviceInfoApiAxiosParamCreator = function (configuration?: Configur
 | 
			
		||||
            setSearchParams(localVarUrlObj, localVarQueryParameter);
 | 
			
		||||
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
 | 
			
		||||
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
 | 
			
		||||
            localVarRequestOptions.data = serializeDataIfNeeded(createDeviceInfoDto, localVarRequestOptions, configuration)
 | 
			
		||||
            localVarRequestOptions.data = serializeDataIfNeeded(upsertDeviceInfoDto, localVarRequestOptions, configuration)
 | 
			
		||||
 | 
			
		||||
            return {
 | 
			
		||||
                url: toPathString(localVarUrlObj),
 | 
			
		||||
@@ -4360,14 +4336,15 @@ export const DeviceInfoApiAxiosParamCreator = function (configuration?: Configur
 | 
			
		||||
            };
 | 
			
		||||
        },
 | 
			
		||||
        /**
 | 
			
		||||
         * 
 | 
			
		||||
         * @param {UpdateDeviceInfoDto} updateDeviceInfoDto 
 | 
			
		||||
         * @deprecated
 | 
			
		||||
         * @summary 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        updateDeviceInfo: async (updateDeviceInfoDto: UpdateDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
 | 
			
		||||
            // verify required parameter 'updateDeviceInfoDto' is not null or undefined
 | 
			
		||||
            assertParamExists('updateDeviceInfo', 'updateDeviceInfoDto', updateDeviceInfoDto)
 | 
			
		||||
        updateDeviceInfo: async (upsertDeviceInfoDto: UpsertDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
 | 
			
		||||
            // verify required parameter 'upsertDeviceInfoDto' is not null or undefined
 | 
			
		||||
            assertParamExists('updateDeviceInfo', 'upsertDeviceInfoDto', upsertDeviceInfoDto)
 | 
			
		||||
            const localVarPath = `/device-info`;
 | 
			
		||||
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
 | 
			
		||||
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
 | 
			
		||||
@@ -4391,7 +4368,46 @@ export const DeviceInfoApiAxiosParamCreator = function (configuration?: Configur
 | 
			
		||||
            setSearchParams(localVarUrlObj, localVarQueryParameter);
 | 
			
		||||
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
 | 
			
		||||
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
 | 
			
		||||
            localVarRequestOptions.data = serializeDataIfNeeded(updateDeviceInfoDto, localVarRequestOptions, configuration)
 | 
			
		||||
            localVarRequestOptions.data = serializeDataIfNeeded(upsertDeviceInfoDto, localVarRequestOptions, configuration)
 | 
			
		||||
 | 
			
		||||
            return {
 | 
			
		||||
                url: toPathString(localVarUrlObj),
 | 
			
		||||
                options: localVarRequestOptions,
 | 
			
		||||
            };
 | 
			
		||||
        },
 | 
			
		||||
        /**
 | 
			
		||||
         * 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        upsertDeviceInfo: async (upsertDeviceInfoDto: UpsertDeviceInfoDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
 | 
			
		||||
            // verify required parameter 'upsertDeviceInfoDto' is not null or undefined
 | 
			
		||||
            assertParamExists('upsertDeviceInfo', 'upsertDeviceInfoDto', upsertDeviceInfoDto)
 | 
			
		||||
            const localVarPath = `/device-info`;
 | 
			
		||||
            // 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: 'PUT', ...baseOptions, ...options};
 | 
			
		||||
            const localVarHeaderParameter = {} as any;
 | 
			
		||||
            const localVarQueryParameter = {} as any;
 | 
			
		||||
 | 
			
		||||
            // authentication bearer required
 | 
			
		||||
            // http bearer authentication required
 | 
			
		||||
            await setBearerAuthToObject(localVarHeaderParameter, configuration)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
            localVarHeaderParameter['Content-Type'] = 'application/json';
 | 
			
		||||
 | 
			
		||||
            setSearchParams(localVarUrlObj, localVarQueryParameter);
 | 
			
		||||
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
 | 
			
		||||
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
 | 
			
		||||
            localVarRequestOptions.data = serializeDataIfNeeded(upsertDeviceInfoDto, localVarRequestOptions, configuration)
 | 
			
		||||
 | 
			
		||||
            return {
 | 
			
		||||
                url: toPathString(localVarUrlObj),
 | 
			
		||||
@@ -4409,23 +4425,35 @@ export const DeviceInfoApiFp = function(configuration?: Configuration) {
 | 
			
		||||
    const localVarAxiosParamCreator = DeviceInfoApiAxiosParamCreator(configuration)
 | 
			
		||||
    return {
 | 
			
		||||
        /**
 | 
			
		||||
         * 
 | 
			
		||||
         * @param {CreateDeviceInfoDto} createDeviceInfoDto 
 | 
			
		||||
         * @deprecated
 | 
			
		||||
         * @summary 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        async createDeviceInfo(createDeviceInfoDto: CreateDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> {
 | 
			
		||||
            const localVarAxiosArgs = await localVarAxiosParamCreator.createDeviceInfo(createDeviceInfoDto, options);
 | 
			
		||||
        async createDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> {
 | 
			
		||||
            const localVarAxiosArgs = await localVarAxiosParamCreator.createDeviceInfo(upsertDeviceInfoDto, options);
 | 
			
		||||
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
 | 
			
		||||
        },
 | 
			
		||||
        /**
 | 
			
		||||
         * @deprecated
 | 
			
		||||
         * @summary 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        async updateDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> {
 | 
			
		||||
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateDeviceInfo(upsertDeviceInfoDto, options);
 | 
			
		||||
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
 | 
			
		||||
        },
 | 
			
		||||
        /**
 | 
			
		||||
         * 
 | 
			
		||||
         * @param {UpdateDeviceInfoDto} updateDeviceInfoDto 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        async updateDeviceInfo(updateDeviceInfoDto: UpdateDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> {
 | 
			
		||||
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateDeviceInfo(updateDeviceInfoDto, options);
 | 
			
		||||
        async upsertDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeviceInfoResponseDto>> {
 | 
			
		||||
            const localVarAxiosArgs = await localVarAxiosParamCreator.upsertDeviceInfo(upsertDeviceInfoDto, options);
 | 
			
		||||
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
 | 
			
		||||
        },
 | 
			
		||||
    }
 | 
			
		||||
@@ -4439,22 +4467,33 @@ export const DeviceInfoApiFactory = function (configuration?: Configuration, bas
 | 
			
		||||
    const localVarFp = DeviceInfoApiFp(configuration)
 | 
			
		||||
    return {
 | 
			
		||||
        /**
 | 
			
		||||
         * 
 | 
			
		||||
         * @param {CreateDeviceInfoDto} createDeviceInfoDto 
 | 
			
		||||
         * @deprecated
 | 
			
		||||
         * @summary 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        createDeviceInfo(createDeviceInfoDto: CreateDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> {
 | 
			
		||||
            return localVarFp.createDeviceInfo(createDeviceInfoDto, options).then((request) => request(axios, basePath));
 | 
			
		||||
        createDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> {
 | 
			
		||||
            return localVarFp.createDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(axios, basePath));
 | 
			
		||||
        },
 | 
			
		||||
        /**
 | 
			
		||||
         * @deprecated
 | 
			
		||||
         * @summary 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        updateDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> {
 | 
			
		||||
            return localVarFp.updateDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(axios, basePath));
 | 
			
		||||
        },
 | 
			
		||||
        /**
 | 
			
		||||
         * 
 | 
			
		||||
         * @param {UpdateDeviceInfoDto} updateDeviceInfoDto 
 | 
			
		||||
         * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
         * @param {*} [options] Override http request option.
 | 
			
		||||
         * @throws {RequiredError}
 | 
			
		||||
         */
 | 
			
		||||
        updateDeviceInfo(updateDeviceInfoDto: UpdateDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> {
 | 
			
		||||
            return localVarFp.updateDeviceInfo(updateDeviceInfoDto, options).then((request) => request(axios, basePath));
 | 
			
		||||
        upsertDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> {
 | 
			
		||||
            return localVarFp.upsertDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(axios, basePath));
 | 
			
		||||
        },
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
@@ -4467,25 +4506,38 @@ export const DeviceInfoApiFactory = function (configuration?: Configuration, bas
 | 
			
		||||
 */
 | 
			
		||||
export class DeviceInfoApi extends BaseAPI {
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @param {CreateDeviceInfoDto} createDeviceInfoDto 
 | 
			
		||||
     * @deprecated
 | 
			
		||||
     * @summary 
 | 
			
		||||
     * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
     * @param {*} [options] Override http request option.
 | 
			
		||||
     * @throws {RequiredError}
 | 
			
		||||
     * @memberof DeviceInfoApi
 | 
			
		||||
     */
 | 
			
		||||
    public createDeviceInfo(createDeviceInfoDto: CreateDeviceInfoDto, options?: AxiosRequestConfig) {
 | 
			
		||||
        return DeviceInfoApiFp(this.configuration).createDeviceInfo(createDeviceInfoDto, options).then((request) => request(this.axios, this.basePath));
 | 
			
		||||
    public createDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig) {
 | 
			
		||||
        return DeviceInfoApiFp(this.configuration).createDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(this.axios, this.basePath));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @deprecated
 | 
			
		||||
     * @summary 
 | 
			
		||||
     * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
     * @param {*} [options] Override http request option.
 | 
			
		||||
     * @throws {RequiredError}
 | 
			
		||||
     * @memberof DeviceInfoApi
 | 
			
		||||
     */
 | 
			
		||||
    public updateDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig) {
 | 
			
		||||
        return DeviceInfoApiFp(this.configuration).updateDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(this.axios, this.basePath));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @param {UpdateDeviceInfoDto} updateDeviceInfoDto 
 | 
			
		||||
     * @param {UpsertDeviceInfoDto} upsertDeviceInfoDto 
 | 
			
		||||
     * @param {*} [options] Override http request option.
 | 
			
		||||
     * @throws {RequiredError}
 | 
			
		||||
     * @memberof DeviceInfoApi
 | 
			
		||||
     */
 | 
			
		||||
    public updateDeviceInfo(updateDeviceInfoDto: UpdateDeviceInfoDto, options?: AxiosRequestConfig) {
 | 
			
		||||
        return DeviceInfoApiFp(this.configuration).updateDeviceInfo(updateDeviceInfoDto, options).then((request) => request(this.axios, this.basePath));
 | 
			
		||||
    public upsertDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig) {
 | 
			
		||||
        return DeviceInfoApiFp(this.configuration).upsertDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(this.axios, this.basePath));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user