mirror of
https://github.com/immich-app/immich.git
synced 2025-05-31 20:25:32 -04:00
chore(server,mobile): remove device info entity (#1527)
* chore(server): remove unused device info code * chore: generate open api * remove any DeviceTypeEnum usage from mobile * chore: coverage * fix: drop device info table --------- Co-authored-by: Fynn Petersen-Frey <zody22@gmail.com>
This commit is contained in:
parent
1e97407025
commit
e22cdea485
@ -1,8 +1,5 @@
|
|||||||
import 'package:openapi/api.dart';
|
|
||||||
|
|
||||||
class AuthenticationState {
|
class AuthenticationState {
|
||||||
final String deviceId;
|
final String deviceId;
|
||||||
final DeviceTypeEnum deviceType;
|
|
||||||
final String userId;
|
final String userId;
|
||||||
final String userEmail;
|
final String userEmail;
|
||||||
final bool isAuthenticated;
|
final bool isAuthenticated;
|
||||||
@ -13,7 +10,6 @@ class AuthenticationState {
|
|||||||
final String profileImagePath;
|
final String profileImagePath;
|
||||||
AuthenticationState({
|
AuthenticationState({
|
||||||
required this.deviceId,
|
required this.deviceId,
|
||||||
required this.deviceType,
|
|
||||||
required this.userId,
|
required this.userId,
|
||||||
required this.userEmail,
|
required this.userEmail,
|
||||||
required this.isAuthenticated,
|
required this.isAuthenticated,
|
||||||
@ -26,7 +22,6 @@ class AuthenticationState {
|
|||||||
|
|
||||||
AuthenticationState copyWith({
|
AuthenticationState copyWith({
|
||||||
String? deviceId,
|
String? deviceId,
|
||||||
DeviceTypeEnum? deviceType,
|
|
||||||
String? userId,
|
String? userId,
|
||||||
String? userEmail,
|
String? userEmail,
|
||||||
bool? isAuthenticated,
|
bool? isAuthenticated,
|
||||||
@ -38,7 +33,6 @@ class AuthenticationState {
|
|||||||
}) {
|
}) {
|
||||||
return AuthenticationState(
|
return AuthenticationState(
|
||||||
deviceId: deviceId ?? this.deviceId,
|
deviceId: deviceId ?? this.deviceId,
|
||||||
deviceType: deviceType ?? this.deviceType,
|
|
||||||
userId: userId ?? this.userId,
|
userId: userId ?? this.userId,
|
||||||
userEmail: userEmail ?? this.userEmail,
|
userEmail: userEmail ?? this.userEmail,
|
||||||
isAuthenticated: isAuthenticated ?? this.isAuthenticated,
|
isAuthenticated: isAuthenticated ?? this.isAuthenticated,
|
||||||
@ -52,7 +46,7 @@ class AuthenticationState {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'AuthenticationState(deviceId: $deviceId, deviceType: $deviceType, userId: $userId, userEmail: $userEmail, isAuthenticated: $isAuthenticated, firstName: $firstName, lastName: $lastName, isAdmin: $isAdmin, shouldChangePassword: $shouldChangePassword, profileImagePath: $profileImagePath)';
|
return 'AuthenticationState(deviceId: $deviceId, userId: $userId, userEmail: $userEmail, isAuthenticated: $isAuthenticated, firstName: $firstName, lastName: $lastName, isAdmin: $isAdmin, shouldChangePassword: $shouldChangePassword, profileImagePath: $profileImagePath)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -61,7 +55,6 @@ class AuthenticationState {
|
|||||||
|
|
||||||
return other is AuthenticationState &&
|
return other is AuthenticationState &&
|
||||||
other.deviceId == deviceId &&
|
other.deviceId == deviceId &&
|
||||||
other.deviceType == deviceType &&
|
|
||||||
other.userId == userId &&
|
other.userId == userId &&
|
||||||
other.userEmail == userEmail &&
|
other.userEmail == userEmail &&
|
||||||
other.isAuthenticated == isAuthenticated &&
|
other.isAuthenticated == isAuthenticated &&
|
||||||
@ -75,7 +68,6 @@ class AuthenticationState {
|
|||||||
@override
|
@override
|
||||||
int get hashCode {
|
int get hashCode {
|
||||||
return deviceId.hashCode ^
|
return deviceId.hashCode ^
|
||||||
deviceType.hashCode ^
|
|
||||||
userId.hashCode ^
|
userId.hashCode ^
|
||||||
userEmail.hashCode ^
|
userEmail.hashCode ^
|
||||||
isAuthenticated.hashCode ^
|
isAuthenticated.hashCode ^
|
||||||
|
@ -3,24 +3,22 @@ import 'dart:io';
|
|||||||
import 'package:device_info_plus/device_info_plus.dart';
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_udid/flutter_udid.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/shared/models/store.dart';
|
import 'package:immich_mobile/shared/models/store.dart';
|
||||||
import 'package:immich_mobile/modules/login/models/authentication_state.model.dart';
|
import 'package:immich_mobile/modules/login/models/authentication_state.model.dart';
|
||||||
import 'package:immich_mobile/shared/models/user.dart';
|
import 'package:immich_mobile/shared/models/user.dart';
|
||||||
import 'package:immich_mobile/shared/providers/api.provider.dart';
|
import 'package:immich_mobile/shared/providers/api.provider.dart';
|
||||||
import 'package:immich_mobile/shared/services/api.service.dart';
|
import 'package:immich_mobile/shared/services/api.service.dart';
|
||||||
import 'package:immich_mobile/shared/services/device_info.service.dart';
|
|
||||||
import 'package:immich_mobile/utils/hash.dart';
|
import 'package:immich_mobile/utils/hash.dart';
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
||||||
AuthenticationNotifier(
|
AuthenticationNotifier(
|
||||||
this._deviceInfoService,
|
|
||||||
this._apiService,
|
this._apiService,
|
||||||
) : super(
|
) : super(
|
||||||
AuthenticationState(
|
AuthenticationState(
|
||||||
deviceId: "",
|
deviceId: "",
|
||||||
deviceType: DeviceTypeEnum.ANDROID,
|
|
||||||
userId: "",
|
userId: "",
|
||||||
userEmail: "",
|
userEmail: "",
|
||||||
firstName: '',
|
firstName: '',
|
||||||
@ -32,7 +30,6 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final DeviceInfoService _deviceInfoService;
|
|
||||||
final ApiService _apiService;
|
final ApiService _apiService;
|
||||||
|
|
||||||
Future<bool> login(
|
Future<bool> login(
|
||||||
@ -146,9 +143,9 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (userResponseDto != null) {
|
if (userResponseDto != null) {
|
||||||
var deviceInfo = await _deviceInfoService.getDeviceInfo();
|
final deviceId = await FlutterUdid.consistentUdid;
|
||||||
Store.put(StoreKey.deviceId, deviceInfo["deviceId"]);
|
Store.put(StoreKey.deviceId, deviceId);
|
||||||
Store.put(StoreKey.deviceIdHash, fastHash(deviceInfo["deviceId"]));
|
Store.put(StoreKey.deviceIdHash, fastHash(deviceId));
|
||||||
Store.put(StoreKey.currentUser, User.fromDto(userResponseDto));
|
Store.put(StoreKey.currentUser, User.fromDto(userResponseDto));
|
||||||
Store.put(StoreKey.serverUrl, serverUrl);
|
Store.put(StoreKey.serverUrl, serverUrl);
|
||||||
Store.put(StoreKey.accessToken, accessToken);
|
Store.put(StoreKey.accessToken, accessToken);
|
||||||
@ -162,8 +159,7 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
|||||||
profileImagePath: userResponseDto.profileImagePath,
|
profileImagePath: userResponseDto.profileImagePath,
|
||||||
isAdmin: userResponseDto.isAdmin,
|
isAdmin: userResponseDto.isAdmin,
|
||||||
shouldChangePassword: userResponseDto.shouldChangePassword,
|
shouldChangePassword: userResponseDto.shouldChangePassword,
|
||||||
deviceId: deviceInfo["deviceId"],
|
deviceId: deviceId,
|
||||||
deviceType: deviceInfo["deviceType"],
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -173,7 +169,6 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
|||||||
final authenticationProvider =
|
final authenticationProvider =
|
||||||
StateNotifierProvider<AuthenticationNotifier, AuthenticationState>((ref) {
|
StateNotifierProvider<AuthenticationNotifier, AuthenticationState>((ref) {
|
||||||
return AuthenticationNotifier(
|
return AuthenticationNotifier(
|
||||||
ref.watch(deviceInfoServiceProvider),
|
|
||||||
ref.watch(apiServiceProvider),
|
ref.watch(apiServiceProvider),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
import 'package:flutter_udid/flutter_udid.dart';
|
|
||||||
import 'dart:io' show Platform;
|
|
||||||
|
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
||||||
import 'package:openapi/api.dart';
|
|
||||||
|
|
||||||
final deviceInfoServiceProvider = Provider((_) => DeviceInfoService());
|
|
||||||
|
|
||||||
class DeviceInfoService {
|
|
||||||
Future<Map<String, dynamic>> getDeviceInfo() async {
|
|
||||||
// Get device info
|
|
||||||
var deviceId = await FlutterUdid.consistentUdid;
|
|
||||||
var deviceType = DeviceTypeEnum.ANDROID;
|
|
||||||
|
|
||||||
if (Platform.isAndroid) {
|
|
||||||
deviceType = DeviceTypeEnum.ANDROID;
|
|
||||||
} else if (Platform.isIOS) {
|
|
||||||
deviceType = DeviceTypeEnum.IOS;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {"deviceId": deviceId, "deviceType": deviceType};
|
|
||||||
}
|
|
||||||
}
|
|
12
mobile/openapi/.openapi-generator/FILES
generated
12
mobile/openapi/.openapi-generator/FILES
generated
@ -41,9 +41,6 @@ doc/CuratedObjectsResponseDto.md
|
|||||||
doc/DeleteAssetDto.md
|
doc/DeleteAssetDto.md
|
||||||
doc/DeleteAssetResponseDto.md
|
doc/DeleteAssetResponseDto.md
|
||||||
doc/DeleteAssetStatus.md
|
doc/DeleteAssetStatus.md
|
||||||
doc/DeviceInfoApi.md
|
|
||||||
doc/DeviceInfoResponseDto.md
|
|
||||||
doc/DeviceTypeEnum.md
|
|
||||||
doc/DownloadFilesDto.md
|
doc/DownloadFilesDto.md
|
||||||
doc/EditSharedLinkDto.md
|
doc/EditSharedLinkDto.md
|
||||||
doc/ExifResponseDto.md
|
doc/ExifResponseDto.md
|
||||||
@ -100,7 +97,6 @@ doc/UpdateAlbumDto.md
|
|||||||
doc/UpdateAssetDto.md
|
doc/UpdateAssetDto.md
|
||||||
doc/UpdateTagDto.md
|
doc/UpdateTagDto.md
|
||||||
doc/UpdateUserDto.md
|
doc/UpdateUserDto.md
|
||||||
doc/UpsertDeviceInfoDto.md
|
|
||||||
doc/UsageByUserDto.md
|
doc/UsageByUserDto.md
|
||||||
doc/UserApi.md
|
doc/UserApi.md
|
||||||
doc/UserCountResponseDto.md
|
doc/UserCountResponseDto.md
|
||||||
@ -112,7 +108,6 @@ lib/api/album_api.dart
|
|||||||
lib/api/api_key_api.dart
|
lib/api/api_key_api.dart
|
||||||
lib/api/asset_api.dart
|
lib/api/asset_api.dart
|
||||||
lib/api/authentication_api.dart
|
lib/api/authentication_api.dart
|
||||||
lib/api/device_info_api.dart
|
|
||||||
lib/api/job_api.dart
|
lib/api/job_api.dart
|
||||||
lib/api/o_auth_api.dart
|
lib/api/o_auth_api.dart
|
||||||
lib/api/search_api.dart
|
lib/api/search_api.dart
|
||||||
@ -163,8 +158,6 @@ lib/model/curated_objects_response_dto.dart
|
|||||||
lib/model/delete_asset_dto.dart
|
lib/model/delete_asset_dto.dart
|
||||||
lib/model/delete_asset_response_dto.dart
|
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_type_enum.dart
|
|
||||||
lib/model/download_files_dto.dart
|
lib/model/download_files_dto.dart
|
||||||
lib/model/edit_shared_link_dto.dart
|
lib/model/edit_shared_link_dto.dart
|
||||||
lib/model/exif_response_dto.dart
|
lib/model/exif_response_dto.dart
|
||||||
@ -214,7 +207,6 @@ lib/model/update_album_dto.dart
|
|||||||
lib/model/update_asset_dto.dart
|
lib/model/update_asset_dto.dart
|
||||||
lib/model/update_tag_dto.dart
|
lib/model/update_tag_dto.dart
|
||||||
lib/model/update_user_dto.dart
|
lib/model/update_user_dto.dart
|
||||||
lib/model/upsert_device_info_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_response_dto.dart
|
lib/model/user_response_dto.dart
|
||||||
@ -258,9 +250,6 @@ test/curated_objects_response_dto_test.dart
|
|||||||
test/delete_asset_dto_test.dart
|
test/delete_asset_dto_test.dart
|
||||||
test/delete_asset_response_dto_test.dart
|
test/delete_asset_response_dto_test.dart
|
||||||
test/delete_asset_status_test.dart
|
test/delete_asset_status_test.dart
|
||||||
test/device_info_api_test.dart
|
|
||||||
test/device_info_response_dto_test.dart
|
|
||||||
test/device_type_enum_test.dart
|
|
||||||
test/download_files_dto_test.dart
|
test/download_files_dto_test.dart
|
||||||
test/edit_shared_link_dto_test.dart
|
test/edit_shared_link_dto_test.dart
|
||||||
test/exif_response_dto_test.dart
|
test/exif_response_dto_test.dart
|
||||||
@ -317,7 +306,6 @@ test/update_album_dto_test.dart
|
|||||||
test/update_asset_dto_test.dart
|
test/update_asset_dto_test.dart
|
||||||
test/update_tag_dto_test.dart
|
test/update_tag_dto_test.dart
|
||||||
test/update_user_dto_test.dart
|
test/update_user_dto_test.dart
|
||||||
test/upsert_device_info_dto_test.dart
|
|
||||||
test/usage_by_user_dto_test.dart
|
test/usage_by_user_dto_test.dart
|
||||||
test/user_api_test.dart
|
test/user_api_test.dart
|
||||||
test/user_count_response_dto_test.dart
|
test/user_count_response_dto_test.dart
|
||||||
|
4
mobile/openapi/README.md
generated
4
mobile/openapi/README.md
generated
@ -116,7 +116,6 @@ Class | Method | HTTP request | Description
|
|||||||
*AuthenticationApi* | [**logout**](doc//AuthenticationApi.md#logout) | **POST** /auth/logout |
|
*AuthenticationApi* | [**logout**](doc//AuthenticationApi.md#logout) | **POST** /auth/logout |
|
||||||
*AuthenticationApi* | [**logoutAuthDevice**](doc//AuthenticationApi.md#logoutauthdevice) | **DELETE** /auth/devices/{id} |
|
*AuthenticationApi* | [**logoutAuthDevice**](doc//AuthenticationApi.md#logoutauthdevice) | **DELETE** /auth/devices/{id} |
|
||||||
*AuthenticationApi* | [**validateAccessToken**](doc//AuthenticationApi.md#validateaccesstoken) | **POST** /auth/validateToken |
|
*AuthenticationApi* | [**validateAccessToken**](doc//AuthenticationApi.md#validateaccesstoken) | **POST** /auth/validateToken |
|
||||||
*DeviceInfoApi* | [**upsertDeviceInfo**](doc//DeviceInfoApi.md#upsertdeviceinfo) | **PUT** /device-info |
|
|
||||||
*JobApi* | [**getAllJobsStatus**](doc//JobApi.md#getalljobsstatus) | **GET** /jobs |
|
*JobApi* | [**getAllJobsStatus**](doc//JobApi.md#getalljobsstatus) | **GET** /jobs |
|
||||||
*JobApi* | [**sendJobCommand**](doc//JobApi.md#sendjobcommand) | **PUT** /jobs/{jobId} |
|
*JobApi* | [**sendJobCommand**](doc//JobApi.md#sendjobcommand) | **PUT** /jobs/{jobId} |
|
||||||
*OAuthApi* | [**callback**](doc//OAuthApi.md#callback) | **POST** /oauth/callback |
|
*OAuthApi* | [**callback**](doc//OAuthApi.md#callback) | **POST** /oauth/callback |
|
||||||
@ -193,8 +192,6 @@ Class | Method | HTTP request | Description
|
|||||||
- [DeleteAssetDto](doc//DeleteAssetDto.md)
|
- [DeleteAssetDto](doc//DeleteAssetDto.md)
|
||||||
- [DeleteAssetResponseDto](doc//DeleteAssetResponseDto.md)
|
- [DeleteAssetResponseDto](doc//DeleteAssetResponseDto.md)
|
||||||
- [DeleteAssetStatus](doc//DeleteAssetStatus.md)
|
- [DeleteAssetStatus](doc//DeleteAssetStatus.md)
|
||||||
- [DeviceInfoResponseDto](doc//DeviceInfoResponseDto.md)
|
|
||||||
- [DeviceTypeEnum](doc//DeviceTypeEnum.md)
|
|
||||||
- [DownloadFilesDto](doc//DownloadFilesDto.md)
|
- [DownloadFilesDto](doc//DownloadFilesDto.md)
|
||||||
- [EditSharedLinkDto](doc//EditSharedLinkDto.md)
|
- [EditSharedLinkDto](doc//EditSharedLinkDto.md)
|
||||||
- [ExifResponseDto](doc//ExifResponseDto.md)
|
- [ExifResponseDto](doc//ExifResponseDto.md)
|
||||||
@ -244,7 +241,6 @@ Class | Method | HTTP request | Description
|
|||||||
- [UpdateAssetDto](doc//UpdateAssetDto.md)
|
- [UpdateAssetDto](doc//UpdateAssetDto.md)
|
||||||
- [UpdateTagDto](doc//UpdateTagDto.md)
|
- [UpdateTagDto](doc//UpdateTagDto.md)
|
||||||
- [UpdateUserDto](doc//UpdateUserDto.md)
|
- [UpdateUserDto](doc//UpdateUserDto.md)
|
||||||
- [UpsertDeviceInfoDto](doc//UpsertDeviceInfoDto.md)
|
|
||||||
- [UsageByUserDto](doc//UsageByUserDto.md)
|
- [UsageByUserDto](doc//UsageByUserDto.md)
|
||||||
- [UserCountResponseDto](doc//UserCountResponseDto.md)
|
- [UserCountResponseDto](doc//UserCountResponseDto.md)
|
||||||
- [UserResponseDto](doc//UserResponseDto.md)
|
- [UserResponseDto](doc//UserResponseDto.md)
|
||||||
|
65
mobile/openapi/doc/DeviceInfoApi.md
generated
65
mobile/openapi/doc/DeviceInfoApi.md
generated
@ -1,65 +0,0 @@
|
|||||||
# openapi.api.DeviceInfoApi
|
|
||||||
|
|
||||||
## Load the API package
|
|
||||||
```dart
|
|
||||||
import 'package:openapi/api.dart';
|
|
||||||
```
|
|
||||||
|
|
||||||
All URIs are relative to */api*
|
|
||||||
|
|
||||||
Method | HTTP request | Description
|
|
||||||
------------- | ------------- | -------------
|
|
||||||
[**upsertDeviceInfo**](DeviceInfoApi.md#upsertdeviceinfo) | **PUT** /device-info |
|
|
||||||
|
|
||||||
|
|
||||||
# **upsertDeviceInfo**
|
|
||||||
> DeviceInfoResponseDto upsertDeviceInfo(upsertDeviceInfoDto)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
|
||||||
```dart
|
|
||||||
import 'package:openapi/api.dart';
|
|
||||||
// TODO Configure API key authorization: cookie
|
|
||||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('cookie').apiKey = 'YOUR_API_KEY';
|
|
||||||
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
|
||||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('cookie').apiKeyPrefix = 'Bearer';
|
|
||||||
// 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
|
|
||||||
|
|
||||||
[**DeviceInfoResponseDto**](DeviceInfoResponseDto.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[cookie](../README.md#cookie), [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)
|
|
||||||
|
|
20
mobile/openapi/doc/DeviceInfoResponseDto.md
generated
20
mobile/openapi/doc/DeviceInfoResponseDto.md
generated
@ -1,20 +0,0 @@
|
|||||||
# openapi.model.DeviceInfoResponseDto
|
|
||||||
|
|
||||||
## Load the model package
|
|
||||||
```dart
|
|
||||||
import 'package:openapi/api.dart';
|
|
||||||
```
|
|
||||||
|
|
||||||
## Properties
|
|
||||||
Name | Type | Description | Notes
|
|
||||||
------------ | ------------- | ------------- | -------------
|
|
||||||
**id** | **int** | |
|
|
||||||
**deviceType** | [**DeviceTypeEnum**](DeviceTypeEnum.md) | |
|
|
||||||
**userId** | **String** | |
|
|
||||||
**deviceId** | **String** | |
|
|
||||||
**createdAt** | **String** | |
|
|
||||||
**isAutoBackup** | **bool** | |
|
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
14
mobile/openapi/doc/DeviceTypeEnum.md
generated
14
mobile/openapi/doc/DeviceTypeEnum.md
generated
@ -1,14 +0,0 @@
|
|||||||
# openapi.model.DeviceTypeEnum
|
|
||||||
|
|
||||||
## Load the model package
|
|
||||||
```dart
|
|
||||||
import 'package:openapi/api.dart';
|
|
||||||
```
|
|
||||||
|
|
||||||
## Properties
|
|
||||||
Name | Type | Description | Notes
|
|
||||||
------------ | ------------- | ------------- | -------------
|
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
17
mobile/openapi/doc/UpsertDeviceInfoDto.md
generated
17
mobile/openapi/doc/UpsertDeviceInfoDto.md
generated
@ -1,17 +0,0 @@
|
|||||||
# openapi.model.UpsertDeviceInfoDto
|
|
||||||
|
|
||||||
## 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)
|
|
||||||
|
|
||||||
|
|
4
mobile/openapi/lib/api.dart
generated
4
mobile/openapi/lib/api.dart
generated
@ -32,7 +32,6 @@ part 'api/api_key_api.dart';
|
|||||||
part 'api/album_api.dart';
|
part 'api/album_api.dart';
|
||||||
part 'api/asset_api.dart';
|
part 'api/asset_api.dart';
|
||||||
part 'api/authentication_api.dart';
|
part 'api/authentication_api.dart';
|
||||||
part 'api/device_info_api.dart';
|
|
||||||
part 'api/job_api.dart';
|
part 'api/job_api.dart';
|
||||||
part 'api/o_auth_api.dart';
|
part 'api/o_auth_api.dart';
|
||||||
part 'api/search_api.dart';
|
part 'api/search_api.dart';
|
||||||
@ -76,8 +75,6 @@ part 'model/curated_objects_response_dto.dart';
|
|||||||
part 'model/delete_asset_dto.dart';
|
part 'model/delete_asset_dto.dart';
|
||||||
part 'model/delete_asset_response_dto.dart';
|
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_type_enum.dart';
|
|
||||||
part 'model/download_files_dto.dart';
|
part 'model/download_files_dto.dart';
|
||||||
part 'model/edit_shared_link_dto.dart';
|
part 'model/edit_shared_link_dto.dart';
|
||||||
part 'model/exif_response_dto.dart';
|
part 'model/exif_response_dto.dart';
|
||||||
@ -127,7 +124,6 @@ part 'model/update_album_dto.dart';
|
|||||||
part 'model/update_asset_dto.dart';
|
part 'model/update_asset_dto.dart';
|
||||||
part 'model/update_tag_dto.dart';
|
part 'model/update_tag_dto.dart';
|
||||||
part 'model/update_user_dto.dart';
|
part 'model/update_user_dto.dart';
|
||||||
part 'model/upsert_device_info_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_response_dto.dart';
|
part 'model/user_response_dto.dart';
|
||||||
|
65
mobile/openapi/lib/api/device_info_api.dart
generated
65
mobile/openapi/lib/api/device_info_api.dart
generated
@ -1,65 +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 DeviceInfoApi {
|
|
||||||
DeviceInfoApi([ApiClient? apiClient]) : apiClient = apiClient ?? defaultApiClient;
|
|
||||||
|
|
||||||
final ApiClient apiClient;
|
|
||||||
|
|
||||||
/// 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));
|
|
||||||
}
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
}
|
|
6
mobile/openapi/lib/api_client.dart
generated
6
mobile/openapi/lib/api_client.dart
generated
@ -249,10 +249,6 @@ class ApiClient {
|
|||||||
return DeleteAssetResponseDto.fromJson(value);
|
return DeleteAssetResponseDto.fromJson(value);
|
||||||
case 'DeleteAssetStatus':
|
case 'DeleteAssetStatus':
|
||||||
return DeleteAssetStatusTypeTransformer().decode(value);
|
return DeleteAssetStatusTypeTransformer().decode(value);
|
||||||
case 'DeviceInfoResponseDto':
|
|
||||||
return DeviceInfoResponseDto.fromJson(value);
|
|
||||||
case 'DeviceTypeEnum':
|
|
||||||
return DeviceTypeEnumTypeTransformer().decode(value);
|
|
||||||
case 'DownloadFilesDto':
|
case 'DownloadFilesDto':
|
||||||
return DownloadFilesDto.fromJson(value);
|
return DownloadFilesDto.fromJson(value);
|
||||||
case 'EditSharedLinkDto':
|
case 'EditSharedLinkDto':
|
||||||
@ -351,8 +347,6 @@ class ApiClient {
|
|||||||
return UpdateTagDto.fromJson(value);
|
return UpdateTagDto.fromJson(value);
|
||||||
case 'UpdateUserDto':
|
case 'UpdateUserDto':
|
||||||
return UpdateUserDto.fromJson(value);
|
return UpdateUserDto.fromJson(value);
|
||||||
case 'UpsertDeviceInfoDto':
|
|
||||||
return UpsertDeviceInfoDto.fromJson(value);
|
|
||||||
case 'UsageByUserDto':
|
case 'UsageByUserDto':
|
||||||
return UsageByUserDto.fromJson(value);
|
return UsageByUserDto.fromJson(value);
|
||||||
case 'UserCountResponseDto':
|
case 'UserCountResponseDto':
|
||||||
|
3
mobile/openapi/lib/api_helper.dart
generated
3
mobile/openapi/lib/api_helper.dart
generated
@ -61,9 +61,6 @@ String parameterToString(dynamic value) {
|
|||||||
if (value is DeleteAssetStatus) {
|
if (value is DeleteAssetStatus) {
|
||||||
return DeleteAssetStatusTypeTransformer().encode(value).toString();
|
return DeleteAssetStatusTypeTransformer().encode(value).toString();
|
||||||
}
|
}
|
||||||
if (value is DeviceTypeEnum) {
|
|
||||||
return DeviceTypeEnumTypeTransformer().encode(value).toString();
|
|
||||||
}
|
|
||||||
if (value is JobCommand) {
|
if (value is JobCommand) {
|
||||||
return JobCommandTypeTransformer().encode(value).toString();
|
return JobCommandTypeTransformer().encode(value).toString();
|
||||||
}
|
}
|
||||||
|
151
mobile/openapi/lib/model/device_info_response_dto.dart
generated
151
mobile/openapi/lib/model/device_info_response_dto.dart
generated
@ -1,151 +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 DeviceInfoResponseDto {
|
|
||||||
/// Returns a new [DeviceInfoResponseDto] instance.
|
|
||||||
DeviceInfoResponseDto({
|
|
||||||
required this.id,
|
|
||||||
required this.deviceType,
|
|
||||||
required this.userId,
|
|
||||||
required this.deviceId,
|
|
||||||
required this.createdAt,
|
|
||||||
required this.isAutoBackup,
|
|
||||||
});
|
|
||||||
|
|
||||||
int id;
|
|
||||||
|
|
||||||
DeviceTypeEnum deviceType;
|
|
||||||
|
|
||||||
String userId;
|
|
||||||
|
|
||||||
String deviceId;
|
|
||||||
|
|
||||||
String createdAt;
|
|
||||||
|
|
||||||
bool isAutoBackup;
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) => identical(this, other) || other is DeviceInfoResponseDto &&
|
|
||||||
other.id == id &&
|
|
||||||
other.deviceType == deviceType &&
|
|
||||||
other.userId == userId &&
|
|
||||||
other.deviceId == deviceId &&
|
|
||||||
other.createdAt == createdAt &&
|
|
||||||
other.isAutoBackup == isAutoBackup;
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode =>
|
|
||||||
// ignore: unnecessary_parenthesis
|
|
||||||
(id.hashCode) +
|
|
||||||
(deviceType.hashCode) +
|
|
||||||
(userId.hashCode) +
|
|
||||||
(deviceId.hashCode) +
|
|
||||||
(createdAt.hashCode) +
|
|
||||||
(isAutoBackup.hashCode);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() => 'DeviceInfoResponseDto[id=$id, deviceType=$deviceType, userId=$userId, deviceId=$deviceId, createdAt=$createdAt, isAutoBackup=$isAutoBackup]';
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final json = <String, dynamic>{};
|
|
||||||
json[r'id'] = this.id;
|
|
||||||
json[r'deviceType'] = this.deviceType;
|
|
||||||
json[r'userId'] = this.userId;
|
|
||||||
json[r'deviceId'] = this.deviceId;
|
|
||||||
json[r'createdAt'] = this.createdAt;
|
|
||||||
json[r'isAutoBackup'] = this.isAutoBackup;
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns a new [DeviceInfoResponseDto] instance and imports its values from
|
|
||||||
/// [value] if it's a [Map], null otherwise.
|
|
||||||
// ignore: prefer_constructors_over_static_methods
|
|
||||||
static DeviceInfoResponseDto? 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 "DeviceInfoResponseDto[$key]" is missing from JSON.');
|
|
||||||
assert(json[key] != null, 'Required key "DeviceInfoResponseDto[$key]" has a null value in JSON.');
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}());
|
|
||||||
|
|
||||||
return DeviceInfoResponseDto(
|
|
||||||
id: mapValueOfType<int>(json, r'id')!,
|
|
||||||
deviceType: DeviceTypeEnum.fromJson(json[r'deviceType'])!,
|
|
||||||
userId: mapValueOfType<String>(json, r'userId')!,
|
|
||||||
deviceId: mapValueOfType<String>(json, r'deviceId')!,
|
|
||||||
createdAt: mapValueOfType<String>(json, r'createdAt')!,
|
|
||||||
isAutoBackup: mapValueOfType<bool>(json, r'isAutoBackup')!,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
static List<DeviceInfoResponseDto>? listFromJson(dynamic json, {bool growable = false,}) {
|
|
||||||
final result = <DeviceInfoResponseDto>[];
|
|
||||||
if (json is List && json.isNotEmpty) {
|
|
||||||
for (final row in json) {
|
|
||||||
final value = DeviceInfoResponseDto.fromJson(row);
|
|
||||||
if (value != null) {
|
|
||||||
result.add(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result.toList(growable: growable);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Map<String, DeviceInfoResponseDto> mapFromJson(dynamic json) {
|
|
||||||
final map = <String, DeviceInfoResponseDto>{};
|
|
||||||
if (json is Map && json.isNotEmpty) {
|
|
||||||
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
|
||||||
for (final entry in json.entries) {
|
|
||||||
final value = DeviceInfoResponseDto.fromJson(entry.value);
|
|
||||||
if (value != null) {
|
|
||||||
map[entry.key] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
// maps a json object with a list of DeviceInfoResponseDto-objects as value to a dart map
|
|
||||||
static Map<String, List<DeviceInfoResponseDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
|
|
||||||
final map = <String, List<DeviceInfoResponseDto>>{};
|
|
||||||
if (json is Map && json.isNotEmpty) {
|
|
||||||
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
|
||||||
for (final entry in json.entries) {
|
|
||||||
final value = DeviceInfoResponseDto.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>{
|
|
||||||
'id',
|
|
||||||
'deviceType',
|
|
||||||
'userId',
|
|
||||||
'deviceId',
|
|
||||||
'createdAt',
|
|
||||||
'isAutoBackup',
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
88
mobile/openapi/lib/model/device_type_enum.dart
generated
88
mobile/openapi/lib/model/device_type_enum.dart
generated
@ -1,88 +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 DeviceTypeEnum {
|
|
||||||
/// Instantiate a new enum with the provided [value].
|
|
||||||
const DeviceTypeEnum._(this.value);
|
|
||||||
|
|
||||||
/// The underlying value of this enum member.
|
|
||||||
final String value;
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() => value;
|
|
||||||
|
|
||||||
String toJson() => value;
|
|
||||||
|
|
||||||
static const IOS = DeviceTypeEnum._(r'IOS');
|
|
||||||
static const ANDROID = DeviceTypeEnum._(r'ANDROID');
|
|
||||||
static const WEB = DeviceTypeEnum._(r'WEB');
|
|
||||||
|
|
||||||
/// List of all possible values in this [enum][DeviceTypeEnum].
|
|
||||||
static const values = <DeviceTypeEnum>[
|
|
||||||
IOS,
|
|
||||||
ANDROID,
|
|
||||||
WEB,
|
|
||||||
];
|
|
||||||
|
|
||||||
static DeviceTypeEnum? fromJson(dynamic value) => DeviceTypeEnumTypeTransformer().decode(value);
|
|
||||||
|
|
||||||
static List<DeviceTypeEnum>? listFromJson(dynamic json, {bool growable = false,}) {
|
|
||||||
final result = <DeviceTypeEnum>[];
|
|
||||||
if (json is List && json.isNotEmpty) {
|
|
||||||
for (final row in json) {
|
|
||||||
final value = DeviceTypeEnum.fromJson(row);
|
|
||||||
if (value != null) {
|
|
||||||
result.add(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result.toList(growable: growable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Transformation class that can [encode] an instance of [DeviceTypeEnum] to String,
|
|
||||||
/// and [decode] dynamic data back to [DeviceTypeEnum].
|
|
||||||
class DeviceTypeEnumTypeTransformer {
|
|
||||||
factory DeviceTypeEnumTypeTransformer() => _instance ??= const DeviceTypeEnumTypeTransformer._();
|
|
||||||
|
|
||||||
const DeviceTypeEnumTypeTransformer._();
|
|
||||||
|
|
||||||
String encode(DeviceTypeEnum data) => data.value;
|
|
||||||
|
|
||||||
/// Decodes a [dynamic value][data] to a DeviceTypeEnum.
|
|
||||||
///
|
|
||||||
/// If [allowNull] is true and the [dynamic value][data] cannot be decoded successfully,
|
|
||||||
/// then null is returned. However, if [allowNull] is false and the [dynamic value][data]
|
|
||||||
/// cannot be decoded successfully, then an [UnimplementedError] is thrown.
|
|
||||||
///
|
|
||||||
/// The [allowNull] is very handy when an API changes and a new enum value is added or removed,
|
|
||||||
/// and users are still using an old app with the old code.
|
|
||||||
DeviceTypeEnum? decode(dynamic data, {bool allowNull = true}) {
|
|
||||||
if (data != null) {
|
|
||||||
switch (data) {
|
|
||||||
case r'IOS': return DeviceTypeEnum.IOS;
|
|
||||||
case r'ANDROID': return DeviceTypeEnum.ANDROID;
|
|
||||||
case r'WEB': return DeviceTypeEnum.WEB;
|
|
||||||
default:
|
|
||||||
if (!allowNull) {
|
|
||||||
throw ArgumentError('Unknown enum value to decode: $data');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Singleton [DeviceTypeEnumTypeTransformer] instance.
|
|
||||||
static DeviceTypeEnumTypeTransformer? _instance;
|
|
||||||
}
|
|
||||||
|
|
136
mobile/openapi/lib/model/upsert_device_info_dto.dart
generated
136
mobile/openapi/lib/model/upsert_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 UpsertDeviceInfoDto {
|
|
||||||
/// Returns a new [UpsertDeviceInfoDto] instance.
|
|
||||||
UpsertDeviceInfoDto({
|
|
||||||
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 UpsertDeviceInfoDto &&
|
|
||||||
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() => 'UpsertDeviceInfoDto[deviceType=$deviceType, deviceId=$deviceId, isAutoBackup=$isAutoBackup]';
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final json = <String, dynamic>{};
|
|
||||||
json[r'deviceType'] = this.deviceType;
|
|
||||||
json[r'deviceId'] = this.deviceId;
|
|
||||||
if (this.isAutoBackup != null) {
|
|
||||||
json[r'isAutoBackup'] = this.isAutoBackup;
|
|
||||||
} else {
|
|
||||||
// json[r'isAutoBackup'] = null;
|
|
||||||
}
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 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 UpsertDeviceInfoDto? 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 "UpsertDeviceInfoDto[$key]" is missing from JSON.');
|
|
||||||
assert(json[key] != null, 'Required key "UpsertDeviceInfoDto[$key]" has a null value in JSON.');
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}());
|
|
||||||
|
|
||||||
return UpsertDeviceInfoDto(
|
|
||||||
deviceType: DeviceTypeEnum.fromJson(json[r'deviceType'])!,
|
|
||||||
deviceId: mapValueOfType<String>(json, r'deviceId')!,
|
|
||||||
isAutoBackup: mapValueOfType<bool>(json, r'isAutoBackup'),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 = UpsertDeviceInfoDto.fromJson(row);
|
|
||||||
if (value != null) {
|
|
||||||
result.add(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result.toList(growable: growable);
|
|
||||||
}
|
|
||||||
|
|
||||||
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 = UpsertDeviceInfoDto.fromJson(entry.value);
|
|
||||||
if (value != null) {
|
|
||||||
map[entry.key] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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 = UpsertDeviceInfoDto.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',
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
26
mobile/openapi/test/device_info_api_test.dart
generated
26
mobile/openapi/test/device_info_api_test.dart
generated
@ -1,26 +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 DeviceInfoApi
|
|
||||||
void main() {
|
|
||||||
// final instance = DeviceInfoApi();
|
|
||||||
|
|
||||||
group('tests for DeviceInfoApi', () {
|
|
||||||
//Future<DeviceInfoResponseDto> upsertDeviceInfo(UpsertDeviceInfoDto upsertDeviceInfoDto) async
|
|
||||||
test('test upsertDeviceInfo', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,52 +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 DeviceInfoResponseDto
|
|
||||||
void main() {
|
|
||||||
// final instance = DeviceInfoResponseDto();
|
|
||||||
|
|
||||||
group('test DeviceInfoResponseDto', () {
|
|
||||||
// int id
|
|
||||||
test('to test the property `id`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
// DeviceTypeEnum deviceType
|
|
||||||
test('to test the property `deviceType`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
// String userId
|
|
||||||
test('to test the property `userId`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
// String deviceId
|
|
||||||
test('to test the property `deviceId`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
// String createdAt
|
|
||||||
test('to test the property `createdAt`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
// bool isAutoBackup
|
|
||||||
test('to test the property `isAutoBackup`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
21
mobile/openapi/test/device_type_enum_test.dart
generated
21
mobile/openapi/test/device_type_enum_test.dart
generated
@ -1,21 +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 DeviceTypeEnum
|
|
||||||
void main() {
|
|
||||||
|
|
||||||
group('test DeviceTypeEnum', () {
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
37
mobile/openapi/test/upsert_device_info_dto_test.dart
generated
37
mobile/openapi/test/upsert_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 UpsertDeviceInfoDto
|
|
||||||
void main() {
|
|
||||||
// final instance = UpsertDeviceInfoDto();
|
|
||||||
|
|
||||||
group('test UpsertDeviceInfoDto', () {
|
|
||||||
// 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
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
@ -10,7 +10,6 @@ import {
|
|||||||
AlbumController,
|
AlbumController,
|
||||||
APIKeyController,
|
APIKeyController,
|
||||||
AuthController,
|
AuthController,
|
||||||
DeviceInfoController,
|
|
||||||
JobController,
|
JobController,
|
||||||
OAuthController,
|
OAuthController,
|
||||||
SearchController,
|
SearchController,
|
||||||
@ -36,7 +35,6 @@ import { AppCronJobs } from './app.cron-jobs';
|
|||||||
AlbumController,
|
AlbumController,
|
||||||
APIKeyController,
|
APIKeyController,
|
||||||
AuthController,
|
AuthController,
|
||||||
DeviceInfoController,
|
|
||||||
JobController,
|
JobController,
|
||||||
OAuthController,
|
OAuthController,
|
||||||
SearchController,
|
SearchController,
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
import {
|
|
||||||
AuthUserDto,
|
|
||||||
DeviceInfoResponseDto as ResponseDto,
|
|
||||||
DeviceInfoService,
|
|
||||||
UpsertDeviceInfoDto as UpsertDto,
|
|
||||||
} from '@app/domain';
|
|
||||||
import { Body, Controller, Put } from '@nestjs/common';
|
|
||||||
import { ApiTags } from '@nestjs/swagger';
|
|
||||||
import { GetAuthUser } from '../decorators/auth-user.decorator';
|
|
||||||
import { Authenticated } from '../decorators/authenticated.decorator';
|
|
||||||
import { UseValidation } from '../decorators/use-validation.decorator';
|
|
||||||
|
|
||||||
@ApiTags('Device Info')
|
|
||||||
@Controller('device-info')
|
|
||||||
@Authenticated()
|
|
||||||
@UseValidation()
|
|
||||||
export class DeviceInfoController {
|
|
||||||
constructor(private readonly service: DeviceInfoService) {}
|
|
||||||
|
|
||||||
@Put()
|
|
||||||
upsertDeviceInfo(@GetAuthUser() authUser: AuthUserDto, @Body() dto: UpsertDto): Promise<ResponseDto> {
|
|
||||||
return this.service.upsert(authUser, dto);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +1,6 @@
|
|||||||
export * from './album.controller';
|
export * from './album.controller';
|
||||||
export * from './api-key.controller';
|
export * from './api-key.controller';
|
||||||
export * from './auth.controller';
|
export * from './auth.controller';
|
||||||
export * from './device-info.controller';
|
|
||||||
export * from './job.controller';
|
export * from './job.controller';
|
||||||
export * from './oauth.controller';
|
export * from './oauth.controller';
|
||||||
export * from './search.controller';
|
export * from './search.controller';
|
||||||
|
@ -500,45 +500,6 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/device-info": {
|
|
||||||
"put": {
|
|
||||||
"operationId": "upsertDeviceInfo",
|
|
||||||
"parameters": [],
|
|
||||||
"requestBody": {
|
|
||||||
"required": true,
|
|
||||||
"content": {
|
|
||||||
"application/json": {
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/components/schemas/UpsertDeviceInfoDto"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "",
|
|
||||||
"content": {
|
|
||||||
"application/json": {
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/components/schemas/DeviceInfoResponseDto"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tags": [
|
|
||||||
"Device Info"
|
|
||||||
],
|
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"bearer": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cookie": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/jobs": {
|
"/jobs": {
|
||||||
"get": {
|
"get": {
|
||||||
"operationId": "getAllJobsStatus",
|
"operationId": "getAllJobsStatus",
|
||||||
@ -4124,63 +4085,6 @@
|
|||||||
"redirectUri"
|
"redirectUri"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"DeviceTypeEnum": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": [
|
|
||||||
"IOS",
|
|
||||||
"ANDROID",
|
|
||||||
"WEB"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"UpsertDeviceInfoDto": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"deviceType": {
|
|
||||||
"$ref": "#/components/schemas/DeviceTypeEnum"
|
|
||||||
},
|
|
||||||
"deviceId": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"isAutoBackup": {
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"deviceType",
|
|
||||||
"deviceId"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"DeviceInfoResponseDto": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"deviceType": {
|
|
||||||
"$ref": "#/components/schemas/DeviceTypeEnum"
|
|
||||||
},
|
|
||||||
"userId": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"deviceId": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"createdAt": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"isAutoBackup": {
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"id",
|
|
||||||
"deviceType",
|
|
||||||
"userId",
|
|
||||||
"deviceId",
|
|
||||||
"createdAt",
|
|
||||||
"isAutoBackup"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"JobCountsDto": {
|
"JobCountsDto": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
import { DeviceInfoEntity } from '@app/infra/entities';
|
|
||||||
import { IDeviceInfoRepository } from './device-info.repository';
|
|
||||||
|
|
||||||
type UpsertKeys = Pick<DeviceInfoEntity, 'deviceId' | 'userId'>;
|
|
||||||
type UpsertEntity = UpsertKeys & Partial<DeviceInfoEntity>;
|
|
||||||
|
|
||||||
export class DeviceInfoCore {
|
|
||||||
constructor(private repository: IDeviceInfoRepository) {}
|
|
||||||
|
|
||||||
async upsert(entity: UpsertEntity) {
|
|
||||||
const exists = await this.repository.get(entity.userId, entity.deviceId);
|
|
||||||
if (!exists) {
|
|
||||||
if (!entity.isAutoBackup) {
|
|
||||||
entity.isAutoBackup = false;
|
|
||||||
}
|
|
||||||
return this.repository.save(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
exists.isAutoBackup = entity.isAutoBackup ?? exists.isAutoBackup;
|
|
||||||
exists.deviceType = entity.deviceType ?? exists.deviceType;
|
|
||||||
return this.repository.save(exists);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
import { DeviceInfoEntity } from '@app/infra/entities';
|
|
||||||
|
|
||||||
export const IDeviceInfoRepository = 'IDeviceInfoRepository';
|
|
||||||
|
|
||||||
export interface IDeviceInfoRepository {
|
|
||||||
get(userId: string, deviceId: string): Promise<DeviceInfoEntity | null>;
|
|
||||||
save(entity: Partial<DeviceInfoEntity>): Promise<DeviceInfoEntity>;
|
|
||||||
}
|
|
@ -1,63 +0,0 @@
|
|||||||
import { DeviceInfoEntity, DeviceType } from '@app/infra/entities';
|
|
||||||
import { authStub, newDeviceInfoRepositoryMock } from '../../test';
|
|
||||||
import { IDeviceInfoRepository } from './device-info.repository';
|
|
||||||
import { DeviceInfoService } from './device-info.service';
|
|
||||||
|
|
||||||
const deviceId = 'device-123';
|
|
||||||
const userId = 'user-123';
|
|
||||||
|
|
||||||
describe('DeviceInfoService', () => {
|
|
||||||
let sut: DeviceInfoService;
|
|
||||||
let repositoryMock: jest.Mocked<IDeviceInfoRepository>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
repositoryMock = newDeviceInfoRepositoryMock();
|
|
||||||
|
|
||||||
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.get.mockResolvedValue(null);
|
|
||||||
repositoryMock.save.mockResolvedValue(response);
|
|
||||||
|
|
||||||
await expect(sut.upsert(authStub.user1, request)).resolves.toEqual(response);
|
|
||||||
|
|
||||||
expect(repositoryMock.get).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.get.mockResolvedValue(response);
|
|
||||||
repositoryMock.save.mockResolvedValue(response);
|
|
||||||
|
|
||||||
await expect(sut.upsert(authStub.user1, request)).resolves.toEqual(response);
|
|
||||||
|
|
||||||
expect(repositoryMock.get).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.get.mockResolvedValue(response);
|
|
||||||
repositoryMock.save.mockResolvedValue(response);
|
|
||||||
|
|
||||||
await expect(sut.upsert(authStub.user1, request)).resolves.toEqual(response);
|
|
||||||
|
|
||||||
expect(repositoryMock.get).toHaveBeenCalledTimes(1);
|
|
||||||
expect(repositoryMock.save).toHaveBeenCalledTimes(1);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,20 +0,0 @@
|
|||||||
import { Inject, Injectable } from '@nestjs/common';
|
|
||||||
import { AuthUserDto } from '../auth';
|
|
||||||
import { DeviceInfoCore } from './device-info.core';
|
|
||||||
import { IDeviceInfoRepository } from './device-info.repository';
|
|
||||||
import { UpsertDeviceInfoDto } from './dto';
|
|
||||||
import { DeviceInfoResponseDto, mapDeviceInfoResponse } from './response-dto';
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class DeviceInfoService {
|
|
||||||
private core: DeviceInfoCore;
|
|
||||||
|
|
||||||
constructor(@Inject(IDeviceInfoRepository) repository: IDeviceInfoRepository) {
|
|
||||||
this.core = new DeviceInfoCore(repository);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async upsert(authUser: AuthUserDto, dto: UpsertDeviceInfoDto): Promise<DeviceInfoResponseDto> {
|
|
||||||
const deviceInfo = await this.core.upsert({ ...dto, userId: authUser.id });
|
|
||||||
return mapDeviceInfoResponse(deviceInfo);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
export * from './upsert-device-info.dto';
|
|
@ -1,15 +0,0 @@
|
|||||||
import { IsNotEmpty, IsOptional } from 'class-validator';
|
|
||||||
import { DeviceType } from '@app/infra/entities';
|
|
||||||
import { ApiProperty } from '@nestjs/swagger';
|
|
||||||
|
|
||||||
export class UpsertDeviceInfoDto {
|
|
||||||
@IsNotEmpty()
|
|
||||||
deviceId!: string;
|
|
||||||
|
|
||||||
@IsNotEmpty()
|
|
||||||
@ApiProperty({ enumName: 'DeviceTypeEnum', enum: DeviceType })
|
|
||||||
deviceType!: DeviceType;
|
|
||||||
|
|
||||||
@IsOptional()
|
|
||||||
isAutoBackup?: boolean;
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
export * from './device-info.repository';
|
|
||||||
export * from './device-info.service';
|
|
||||||
export * from './dto';
|
|
||||||
export * from './response-dto';
|
|
@ -1,26 +0,0 @@
|
|||||||
import { DeviceInfoEntity, DeviceType } from '@app/infra/entities';
|
|
||||||
import { ApiProperty } from '@nestjs/swagger';
|
|
||||||
|
|
||||||
export class DeviceInfoResponseDto {
|
|
||||||
@ApiProperty({ type: 'integer' })
|
|
||||||
id!: number;
|
|
||||||
userId!: string;
|
|
||||||
deviceId!: string;
|
|
||||||
|
|
||||||
@ApiProperty({ enumName: 'DeviceTypeEnum', enum: DeviceType })
|
|
||||||
deviceType!: DeviceType;
|
|
||||||
|
|
||||||
createdAt!: string;
|
|
||||||
isAutoBackup!: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function mapDeviceInfoResponse(entity: DeviceInfoEntity): DeviceInfoResponseDto {
|
|
||||||
return {
|
|
||||||
id: entity.id,
|
|
||||||
userId: entity.userId,
|
|
||||||
deviceId: entity.deviceId,
|
|
||||||
deviceType: entity.deviceType,
|
|
||||||
createdAt: entity.createdAt,
|
|
||||||
isAutoBackup: entity.isAutoBackup,
|
|
||||||
};
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
export * from './device-info-response.dto';
|
|
@ -3,7 +3,6 @@ import { AlbumService } from './album';
|
|||||||
import { APIKeyService } from './api-key';
|
import { APIKeyService } from './api-key';
|
||||||
import { AssetService } from './asset';
|
import { AssetService } from './asset';
|
||||||
import { AuthService } from './auth';
|
import { AuthService } from './auth';
|
||||||
import { DeviceInfoService } from './device-info';
|
|
||||||
import { JobService } from './job';
|
import { JobService } from './job';
|
||||||
import { MediaService } from './media';
|
import { MediaService } from './media';
|
||||||
import { OAuthService } from './oauth';
|
import { OAuthService } from './oauth';
|
||||||
@ -21,7 +20,6 @@ const providers: Provider[] = [
|
|||||||
AssetService,
|
AssetService,
|
||||||
APIKeyService,
|
APIKeyService,
|
||||||
AuthService,
|
AuthService,
|
||||||
DeviceInfoService,
|
|
||||||
JobService,
|
JobService,
|
||||||
MediaService,
|
MediaService,
|
||||||
OAuthService,
|
OAuthService,
|
||||||
|
@ -4,7 +4,6 @@ export * from './asset';
|
|||||||
export * from './auth';
|
export * from './auth';
|
||||||
export * from './communication';
|
export * from './communication';
|
||||||
export * from './crypto';
|
export * from './crypto';
|
||||||
export * from './device-info';
|
|
||||||
export * from './domain.config';
|
export * from './domain.config';
|
||||||
export * from './domain.constant';
|
export * from './domain.constant';
|
||||||
export * from './domain.module';
|
export * from './domain.module';
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
import { IDeviceInfoRepository } from '../src';
|
|
||||||
|
|
||||||
export const newDeviceInfoRepositoryMock = (): jest.Mocked<IDeviceInfoRepository> => {
|
|
||||||
return {
|
|
||||||
get: jest.fn(),
|
|
||||||
save: jest.fn(),
|
|
||||||
};
|
|
||||||
};
|
|
@ -3,7 +3,6 @@ export * from './api-key.repository.mock';
|
|||||||
export * from './asset.repository.mock';
|
export * from './asset.repository.mock';
|
||||||
export * from './communication.repository.mock';
|
export * from './communication.repository.mock';
|
||||||
export * from './crypto.repository.mock';
|
export * from './crypto.repository.mock';
|
||||||
export * from './device-info.repository.mock';
|
|
||||||
export * from './fixtures';
|
export * from './fixtures';
|
||||||
export * from './job.repository.mock';
|
export * from './job.repository.mock';
|
||||||
export * from './machine-learning.repository.mock';
|
export * from './machine-learning.repository.mock';
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, Unique } from 'typeorm';
|
|
||||||
|
|
||||||
@Entity('device_info')
|
|
||||||
@Unique(['userId', 'deviceId'])
|
|
||||||
export class DeviceInfoEntity {
|
|
||||||
@PrimaryGeneratedColumn()
|
|
||||||
id!: number;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
userId!: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
deviceId!: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
deviceType!: DeviceType;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: true })
|
|
||||||
notificationToken!: string | null;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
createdAt!: string;
|
|
||||||
|
|
||||||
@Column({ type: 'bool', default: false })
|
|
||||||
isAutoBackup!: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum DeviceType {
|
|
||||||
IOS = 'IOS',
|
|
||||||
ANDROID = 'ANDROID',
|
|
||||||
WEB = 'WEB',
|
|
||||||
}
|
|
@ -1,7 +1,6 @@
|
|||||||
import { AlbumEntity } from './album.entity';
|
import { AlbumEntity } from './album.entity';
|
||||||
import { APIKeyEntity } from './api-key.entity';
|
import { APIKeyEntity } from './api-key.entity';
|
||||||
import { AssetEntity } from './asset.entity';
|
import { AssetEntity } from './asset.entity';
|
||||||
import { DeviceInfoEntity } from './device-info.entity';
|
|
||||||
import { SharedLinkEntity } from './shared-link.entity';
|
import { SharedLinkEntity } from './shared-link.entity';
|
||||||
import { SmartInfoEntity } from './smart-info.entity';
|
import { SmartInfoEntity } from './smart-info.entity';
|
||||||
import { SystemConfigEntity } from './system-config.entity';
|
import { SystemConfigEntity } from './system-config.entity';
|
||||||
@ -11,7 +10,6 @@ import { UserEntity } from './user.entity';
|
|||||||
export * from './album.entity';
|
export * from './album.entity';
|
||||||
export * from './api-key.entity';
|
export * from './api-key.entity';
|
||||||
export * from './asset.entity';
|
export * from './asset.entity';
|
||||||
export * from './device-info.entity';
|
|
||||||
export * from './exif.entity';
|
export * from './exif.entity';
|
||||||
export * from './shared-link.entity';
|
export * from './shared-link.entity';
|
||||||
export * from './smart-info.entity';
|
export * from './smart-info.entity';
|
||||||
@ -24,7 +22,6 @@ export const databaseEntities = [
|
|||||||
AssetEntity,
|
AssetEntity,
|
||||||
AlbumEntity,
|
AlbumEntity,
|
||||||
APIKeyEntity,
|
APIKeyEntity,
|
||||||
DeviceInfoEntity,
|
|
||||||
UserEntity,
|
UserEntity,
|
||||||
SharedLinkEntity,
|
SharedLinkEntity,
|
||||||
SmartInfoEntity,
|
SmartInfoEntity,
|
||||||
|
@ -3,7 +3,6 @@ import {
|
|||||||
IAssetRepository,
|
IAssetRepository,
|
||||||
ICommunicationRepository,
|
ICommunicationRepository,
|
||||||
ICryptoRepository,
|
ICryptoRepository,
|
||||||
IDeviceInfoRepository,
|
|
||||||
IGeocodingRepository,
|
IGeocodingRepository,
|
||||||
IJobRepository,
|
IJobRepository,
|
||||||
IKeyRepository,
|
IKeyRepository,
|
||||||
@ -32,7 +31,6 @@ import {
|
|||||||
AssetRepository,
|
AssetRepository,
|
||||||
CommunicationRepository,
|
CommunicationRepository,
|
||||||
CryptoRepository,
|
CryptoRepository,
|
||||||
DeviceInfoRepository,
|
|
||||||
FilesystemProvider,
|
FilesystemProvider,
|
||||||
GeocodingRepository,
|
GeocodingRepository,
|
||||||
JobRepository,
|
JobRepository,
|
||||||
@ -51,7 +49,6 @@ const providers: Provider[] = [
|
|||||||
{ provide: IAssetRepository, useClass: AssetRepository },
|
{ provide: IAssetRepository, useClass: AssetRepository },
|
||||||
{ provide: ICommunicationRepository, useClass: CommunicationRepository },
|
{ provide: ICommunicationRepository, useClass: CommunicationRepository },
|
||||||
{ provide: ICryptoRepository, useClass: CryptoRepository },
|
{ provide: ICryptoRepository, useClass: CryptoRepository },
|
||||||
{ provide: IDeviceInfoRepository, useClass: DeviceInfoRepository },
|
|
||||||
{ provide: IGeocodingRepository, useClass: GeocodingRepository },
|
{ provide: IGeocodingRepository, useClass: GeocodingRepository },
|
||||||
{ provide: IJobRepository, useClass: JobRepository },
|
{ provide: IJobRepository, useClass: JobRepository },
|
||||||
{ provide: IKeyRepository, useClass: APIKeyRepository },
|
{ provide: IKeyRepository, useClass: APIKeyRepository },
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||||
|
|
||||||
|
export class DropDeviceInfoTable1682710252424 implements MigrationInterface {
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`drop table device_info`);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`
|
||||||
|
create table if not exists device_info
|
||||||
|
(
|
||||||
|
id serial
|
||||||
|
constraint "PK_b1c15a80b0a4e5f4eebadbdd92c"
|
||||||
|
primary key,
|
||||||
|
"userId" varchar not null,
|
||||||
|
"deviceId" varchar not null,
|
||||||
|
"deviceType" varchar not null,
|
||||||
|
"notificationToken" varchar,
|
||||||
|
"createdAt" timestamp default now() not null,
|
||||||
|
"isAutoBackup" boolean default false not null,
|
||||||
|
constraint "UQ_ebad78f36b10d15fbea8560e107"
|
||||||
|
unique ("userId", "deviceId")
|
||||||
|
);
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
import { IDeviceInfoRepository } from '@app/domain';
|
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
|
||||||
import { Repository } from 'typeorm';
|
|
||||||
import { DeviceInfoEntity } from '../entities';
|
|
||||||
|
|
||||||
export class DeviceInfoRepository implements IDeviceInfoRepository {
|
|
||||||
constructor(@InjectRepository(DeviceInfoEntity) private repository: Repository<DeviceInfoEntity>) {}
|
|
||||||
|
|
||||||
get(userId: string, deviceId: string): Promise<DeviceInfoEntity | null> {
|
|
||||||
return this.repository.findOne({ where: { userId, deviceId } });
|
|
||||||
}
|
|
||||||
|
|
||||||
save(entity: Partial<DeviceInfoEntity>): Promise<DeviceInfoEntity> {
|
|
||||||
return this.repository.save(entity);
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,7 +3,6 @@ export * from './api-key.repository';
|
|||||||
export * from './asset.repository';
|
export * from './asset.repository';
|
||||||
export * from './communication.repository';
|
export * from './communication.repository';
|
||||||
export * from './crypto.repository';
|
export * from './crypto.repository';
|
||||||
export * from './device-info.repository';
|
|
||||||
export * from './filesystem.provider';
|
export * from './filesystem.provider';
|
||||||
export * from './geocoding.repository';
|
export * from './geocoding.repository';
|
||||||
export * from './job.repository';
|
export * from './job.repository';
|
||||||
|
@ -141,9 +141,9 @@
|
|||||||
"coverageThreshold": {
|
"coverageThreshold": {
|
||||||
"./libs/domain/": {
|
"./libs/domain/": {
|
||||||
"branches": 80,
|
"branches": 80,
|
||||||
"functions": 88,
|
"functions": 87,
|
||||||
"lines": 94,
|
"lines": 94,
|
||||||
"statements": 94
|
"statements": 93
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setupFilesAfterEnv": [
|
"setupFilesAfterEnv": [
|
||||||
|
@ -5,7 +5,6 @@ import {
|
|||||||
AuthenticationApi,
|
AuthenticationApi,
|
||||||
Configuration,
|
Configuration,
|
||||||
ConfigurationParameters,
|
ConfigurationParameters,
|
||||||
DeviceInfoApi,
|
|
||||||
JobApi,
|
JobApi,
|
||||||
OAuthApi,
|
OAuthApi,
|
||||||
SearchApi,
|
SearchApi,
|
||||||
@ -24,7 +23,6 @@ export class ImmichApi {
|
|||||||
public assetApi: AssetApi;
|
public assetApi: AssetApi;
|
||||||
public authenticationApi: AuthenticationApi;
|
public authenticationApi: AuthenticationApi;
|
||||||
public oauthApi: OAuthApi;
|
public oauthApi: OAuthApi;
|
||||||
public deviceInfoApi: DeviceInfoApi;
|
|
||||||
public searchApi: SearchApi;
|
public searchApi: SearchApi;
|
||||||
public serverInfoApi: ServerInfoApi;
|
public serverInfoApi: ServerInfoApi;
|
||||||
public jobApi: JobApi;
|
public jobApi: JobApi;
|
||||||
@ -42,7 +40,6 @@ export class ImmichApi {
|
|||||||
this.assetApi = new AssetApi(this.config);
|
this.assetApi = new AssetApi(this.config);
|
||||||
this.authenticationApi = new AuthenticationApi(this.config);
|
this.authenticationApi = new AuthenticationApi(this.config);
|
||||||
this.oauthApi = new OAuthApi(this.config);
|
this.oauthApi = new OAuthApi(this.config);
|
||||||
this.deviceInfoApi = new DeviceInfoApi(this.config);
|
|
||||||
this.serverInfoApi = new ServerInfoApi(this.config);
|
this.serverInfoApi = new ServerInfoApi(this.config);
|
||||||
this.jobApi = new JobApi(this.config);
|
this.jobApi = new JobApi(this.config);
|
||||||
this.keyApi = new APIKeyApi(this.config);
|
this.keyApi = new APIKeyApi(this.config);
|
||||||
|
196
web/src/api/open-api/api.ts
generated
196
web/src/api/open-api/api.ts
generated
@ -1021,66 +1021,6 @@ export const DeleteAssetStatus = {
|
|||||||
export type DeleteAssetStatus = typeof DeleteAssetStatus[keyof typeof DeleteAssetStatus];
|
export type DeleteAssetStatus = typeof DeleteAssetStatus[keyof typeof DeleteAssetStatus];
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @export
|
|
||||||
* @interface DeviceInfoResponseDto
|
|
||||||
*/
|
|
||||||
export interface DeviceInfoResponseDto {
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {number}
|
|
||||||
* @memberof DeviceInfoResponseDto
|
|
||||||
*/
|
|
||||||
'id': number;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {DeviceTypeEnum}
|
|
||||||
* @memberof DeviceInfoResponseDto
|
|
||||||
*/
|
|
||||||
'deviceType': DeviceTypeEnum;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {string}
|
|
||||||
* @memberof DeviceInfoResponseDto
|
|
||||||
*/
|
|
||||||
'userId': string;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {string}
|
|
||||||
* @memberof DeviceInfoResponseDto
|
|
||||||
*/
|
|
||||||
'deviceId': string;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {string}
|
|
||||||
* @memberof DeviceInfoResponseDto
|
|
||||||
*/
|
|
||||||
'createdAt': string;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {boolean}
|
|
||||||
* @memberof DeviceInfoResponseDto
|
|
||||||
*/
|
|
||||||
'isAutoBackup': boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @export
|
|
||||||
* @enum {string}
|
|
||||||
*/
|
|
||||||
|
|
||||||
export const DeviceTypeEnum = {
|
|
||||||
Ios: 'IOS',
|
|
||||||
Android: 'ANDROID',
|
|
||||||
Web: 'WEB'
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
export type DeviceTypeEnum = typeof DeviceTypeEnum[keyof typeof DeviceTypeEnum];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
@ -2465,33 +2405,6 @@ export interface UpdateUserDto {
|
|||||||
*/
|
*/
|
||||||
'shouldChangePassword'?: boolean;
|
'shouldChangePassword'?: boolean;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @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
|
* @export
|
||||||
@ -6406,115 +6319,6 @@ export class AuthenticationApi extends BaseAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeviceInfoApi - axios parameter creator
|
|
||||||
* @export
|
|
||||||
*/
|
|
||||||
export const DeviceInfoApiAxiosParamCreator = function (configuration?: Configuration) {
|
|
||||||
return {
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @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 cookie required
|
|
||||||
|
|
||||||
// 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),
|
|
||||||
options: localVarRequestOptions,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeviceInfoApi - functional programming interface
|
|
||||||
* @export
|
|
||||||
*/
|
|
||||||
export const DeviceInfoApiFp = function(configuration?: Configuration) {
|
|
||||||
const localVarAxiosParamCreator = DeviceInfoApiAxiosParamCreator(configuration)
|
|
||||||
return {
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {UpsertDeviceInfoDto} upsertDeviceInfoDto
|
|
||||||
* @param {*} [options] Override http request option.
|
|
||||||
* @throws {RequiredError}
|
|
||||||
*/
|
|
||||||
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);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeviceInfoApi - factory interface
|
|
||||||
* @export
|
|
||||||
*/
|
|
||||||
export const DeviceInfoApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
|
|
||||||
const localVarFp = DeviceInfoApiFp(configuration)
|
|
||||||
return {
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {UpsertDeviceInfoDto} upsertDeviceInfoDto
|
|
||||||
* @param {*} [options] Override http request option.
|
|
||||||
* @throws {RequiredError}
|
|
||||||
*/
|
|
||||||
upsertDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: any): AxiosPromise<DeviceInfoResponseDto> {
|
|
||||||
return localVarFp.upsertDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(axios, basePath));
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeviceInfoApi - object-oriented interface
|
|
||||||
* @export
|
|
||||||
* @class DeviceInfoApi
|
|
||||||
* @extends {BaseAPI}
|
|
||||||
*/
|
|
||||||
export class DeviceInfoApi extends BaseAPI {
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {UpsertDeviceInfoDto} upsertDeviceInfoDto
|
|
||||||
* @param {*} [options] Override http request option.
|
|
||||||
* @throws {RequiredError}
|
|
||||||
* @memberof DeviceInfoApi
|
|
||||||
*/
|
|
||||||
public upsertDeviceInfo(upsertDeviceInfoDto: UpsertDeviceInfoDto, options?: AxiosRequestConfig) {
|
|
||||||
return DeviceInfoApiFp(this.configuration).upsertDeviceInfo(upsertDeviceInfoDto, options).then((request) => request(this.axios, this.basePath));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JobApi - axios parameter creator
|
* JobApi - axios parameter creator
|
||||||
* @export
|
* @export
|
||||||
|
Loading…
x
Reference in New Issue
Block a user