refactor(utils): extract query params builder, migrate health and location
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import 'dart:convert';
|
||||
import 'package:utils/utils.dart';
|
||||
|
||||
enum OrderDirection {
|
||||
asc('ASC'),
|
||||
@@ -18,23 +18,24 @@ class HealthQueryBuilder {
|
||||
List<HealthFilter>? filters,
|
||||
String orderField = 'occurredAt',
|
||||
}) {
|
||||
final orderBy = base64Encode(
|
||||
utf8.encode(
|
||||
'[{"field":"$orderField","sortDirection":"${orderDirection.value}"}]',
|
||||
),
|
||||
);
|
||||
|
||||
final params = <String, dynamic>{'orderBy': orderBy};
|
||||
final params = <String, dynamic>{
|
||||
'orderBy': encodeOrderBy(orderField, direction: orderDirection.value),
|
||||
};
|
||||
if (pageSize != null) params['pageSize'] = pageSize;
|
||||
if (page != null) params['page'] = page;
|
||||
|
||||
if (filters != null && filters.isNotEmpty) {
|
||||
final json = filters
|
||||
params['filters'] = encodeFilters(
|
||||
filters
|
||||
.map(
|
||||
(f) => {'field': f.field, 'operator': f.operator, 'value': f.value},
|
||||
(f) => {
|
||||
'field': f.field,
|
||||
'operator': f.operator,
|
||||
'value': f.value,
|
||||
},
|
||||
)
|
||||
.toList();
|
||||
params['filters'] = base64Encode(utf8.encode(jsonEncode(json)));
|
||||
.toList(),
|
||||
);
|
||||
}
|
||||
|
||||
return params;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:utils/utils.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:location/src/core/data/datasource/location_remote_datasource.dart';
|
||||
@@ -156,22 +155,12 @@ class LocationRemoteDatasourceImpl implements LocationRemoteDatasource {
|
||||
final fromMs = from.millisecondsSinceEpoch;
|
||||
final toMs = to.millisecondsSinceEpoch;
|
||||
|
||||
final filters = base64Encode(
|
||||
utf8.encode(
|
||||
jsonEncode([
|
||||
final filters = encodeFilters([
|
||||
{'field': 'positionDate', 'operator': 'gte', 'value': fromMs},
|
||||
{'field': 'positionDate', 'operator': 'lte', 'value': toMs},
|
||||
]),
|
||||
),
|
||||
);
|
||||
]);
|
||||
|
||||
final orderBy = base64Encode(
|
||||
utf8.encode(
|
||||
jsonEncode([
|
||||
{'field': 'positionDate', 'sortDirection': 'ASC'},
|
||||
]),
|
||||
),
|
||||
);
|
||||
final orderBy = encodeOrderBy('positionDate', direction: 'ASC');
|
||||
|
||||
final allPositions = <PositionEntity>[];
|
||||
int currentPage = 1;
|
||||
|
||||
25
packages/utils/lib/src/query_params_builder.dart
Normal file
25
packages/utils/lib/src/query_params_builder.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'dart:convert';
|
||||
|
||||
String encodeOrderBy(String field, {String direction = 'DESC'}) {
|
||||
return base64Encode(
|
||||
utf8.encode(
|
||||
jsonEncode([
|
||||
{'field': field, 'sortDirection': direction},
|
||||
]),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
String encodeFilters(List<Map<String, dynamic>> filters) {
|
||||
return base64Encode(utf8.encode(jsonEncode(filters)));
|
||||
}
|
||||
|
||||
String encodeFilter({
|
||||
required String field,
|
||||
required String operator,
|
||||
required dynamic value,
|
||||
}) {
|
||||
return encodeFilters([
|
||||
{'field': field, 'operator': operator, 'value': value},
|
||||
]);
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
export 'src/date_utils.dart';
|
||||
export 'src/duration_format.dart';
|
||||
export 'src/query_params_builder.dart';
|
||||
export 'src/size_utils.dart';
|
||||
export 'src/test.dart';
|
||||
|
||||
Reference in New Issue
Block a user