temp build

This commit is contained in:
Stephan D
2025-12-05 01:32:41 +01:00
parent 082d782a80
commit f71cc76f64
50 changed files with 853 additions and 707 deletions

View File

@@ -1,6 +1,7 @@
import 'package:logging/logging.dart';
import 'package:pshared/service/authorization/service.dart';
import 'package:pshared/utils/http/params.dart';
class BasicService<T> {
@@ -15,15 +16,26 @@ class BasicService<T> {
required this.fromJson,
}) : _objectType = objectType, _logger = Logger('service.$objectType');
Future<List<T>> list(String organizationRef, String parentRef) async {
_logger.fine('Loading all objects');
String _refLog(String ref) => ref.isEmpty ? '<not set>' : ref;
Future<List<T>> list(String organizationRef, String parentRef, {int? limit, int? offset, bool? fetchArchived}) async {
_logger.fine('Loading all for organization ${_refLog(organizationRef)} and parent ${_refLog(organizationRef)} with: limit=${_formatParameter(limit)}, offset=${_formatParameter(offset)}, fetchArchived=${_formatParameter(fetchArchived)}...');
return _getObjects(
AuthorizationService.getGETResponse(_objectType, '/list/$organizationRef/$parentRef'),
AuthorizationService.getGETResponse(
_objectType,
paramsToUriString(
path: '/list/$organizationRef/$parentRef',
limit: limit,
offset: offset,
fetchArchived: fetchArchived,
),
),
);
}
Future<T> get(String objectRef) async {
_logger.fine('Loading object $objectRef');
_logger.fine('Loading $_objectType $objectRef');
final objects = await _getObjects(
AuthorizationService.getGETResponse(_objectType, '/$objectRef'),
);
@@ -31,24 +43,36 @@ class BasicService<T> {
}
Future<List<T>> create(String organizationRef, Map<String, dynamic> request) async {
_logger.fine('Creating new object...');
_logger.fine('Creating new...');
return _getObjects(
AuthorizationService.getPOSTResponse(_objectType, '/$organizationRef', request),
);
}
Future<List<T>> update(Map<String, dynamic> request) async {
_logger.fine('Patching object...');
_logger.fine('Patching...');
return _getObjects(
AuthorizationService.getPUTResponse(_objectType, '/', request,
),
);
}
Future<List<T>> delete(String objecRef) async {
_logger.fine('Deleting object $objecRef');
Future<List<T>> delete(String objecRef, {Map<String, dynamic>? request}) async {
_logger.fine('Deleting $_objectType $objecRef');
return _getObjects(
AuthorizationService.getDELETEResponse(_objectType, '/$objecRef', {}),
AuthorizationService.getDELETEResponse(_objectType, '/$objecRef', request ?? {}),
);
}
Future<List<T>> archive({
required String organizationRef,
required String objectRef,
required bool newIsArchived,
bool? cascade,
}) async {
_logger.fine('Setting new archive status $newIsArchived to $objectRef');
return _getObjects(
AuthorizationService.getGETResponse(_objectType, '/archive/$organizationRef/$objectRef?archived=$newIsArchived&cascade=${cascade ?? false}'),
);
}
@@ -59,8 +83,12 @@ class BasicService<T> {
_logger.fine('Fetched ${objects.length} object(s)');
return objects;
} catch (e, stackTrace) {
_logger.severe('Failed to fetch objects', e, stackTrace);
_logger.severe('Failed to fetch', e, stackTrace);
rethrow;
}
}
String _formatParameter(dynamic value) {
return value?.toString() ?? '<not specified>';
}
}