|
1 | 1 | import 'package:core/core.dart'; |
2 | 2 | import 'package:dart_frog/dart_frog.dart'; |
3 | 3 | import 'package:data_repository/data_repository.dart'; |
| 4 | +import 'package:flutter_news_app_api_server_full_source_code/src/config/app_dependencies.dart'; |
4 | 5 | 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'; |
5 | 7 | import 'package:flutter_news_app_api_server_full_source_code/src/services/dashboard_summary_service.dart'; |
6 | 8 |
|
7 | 9 | // --- Typedefs for Data Operations --- |
@@ -128,12 +130,26 @@ class DataOperationRegistry { |
128 | 130 | sort: s, |
129 | 131 | pagination: p, |
130 | 132 | ), |
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 | + }, |
137 | 153 | 'language': (c, uid, f, s, p) => c |
138 | 154 | .read<DataRepository<Language>>() |
139 | 155 | .readAll(userId: uid, filter: f, sort: s, pagination: p), |
|
0 commit comments