Skip to content

Commit b659fb8

Browse files
committed
feat(country): implement special filtering for country data operation
- Add special filter handling for 'hasActiveSources' and 'hasActiveHeadlines' filters - Integrate CountryQueryService for filtered country queries - Maintain standard readAll behavior for other cases
1 parent 55d2855 commit b659fb8

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

lib/src/registry/data_operation_registry.dart

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import 'package:core/core.dart';
22
import 'package:dart_frog/dart_frog.dart';
33
import 'package:data_repository/data_repository.dart';
4+
import 'package:flutter_news_app_api_server_full_source_code/src/config/app_dependencies.dart';
45
import 'package:flutter_news_app_api_server_full_source_code/src/middlewares/ownership_check_middleware.dart';
6+
import 'package:flutter_news_app_api_server_full_source_code/src/services/country_query_service.dart';
57
import 'package:flutter_news_app_api_server_full_source_code/src/services/dashboard_summary_service.dart';
68

79
// --- Typedefs for Data Operations ---
@@ -128,12 +130,26 @@ class DataOperationRegistry {
128130
sort: s,
129131
pagination: p,
130132
),
131-
'country': (c, uid, f, s, p) => c.read<DataRepository<Country>>().readAll(
132-
userId: uid,
133-
filter: f,
134-
sort: s,
135-
pagination: p,
136-
),
133+
'country': (c, uid, f, s, p) async {
134+
final countryQueryService = AppDependencies.instance.countryQueryService;
135+
// Check for special filters that require aggregation
136+
if (f != null &&
137+
(f.containsKey('hasActiveSources') ||
138+
f.containsKey('hasActiveHeadlines'))) {
139+
return countryQueryService.getFilteredCountries(
140+
filter: f,
141+
pagination: p,
142+
sort: s,
143+
);
144+
}
145+
// Fallback to standard readAll if no special filters are present
146+
return c.read<DataRepository<Country>>().readAll(
147+
userId: uid,
148+
filter: f,
149+
sort: s,
150+
pagination: p,
151+
);
152+
},
137153
'language': (c, uid, f, s, p) => c
138154
.read<DataRepository<Language>>()
139155
.readAll(userId: uid, filter: f, sort: s, pagination: p),

0 commit comments

Comments
 (0)