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:
Jason Rasmussen
2022-12-08 10:57:07 -05:00
committed by GitHub
parent b8e26a2112
commit cefdd86b7f
23 changed files with 468 additions and 443 deletions

View File

@@ -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';

View File

@@ -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));
}

View File

@@ -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':

View File

@@ -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',
};
}

View File

@@ -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;
}