11import 'package:core/core.dart' ;
22import 'package:dart_frog/dart_frog.dart' ;
33import 'package:data_repository/data_repository.dart' ;
4- import 'package:flutter_news_app_api_server_full_source_code/src/services/dashboard_summary_service.dart' ;
54import 'package:flutter_news_app_api_server_full_source_code/src/middlewares/ownership_check_middleware.dart' ;
5+ import 'package:flutter_news_app_api_server_full_source_code/src/services/dashboard_summary_service.dart' ;
66
77// --- Typedefs for Data Operations ---
88
99/// A function that fetches a single item by its ID.
10- typedef ItemFetcher = Future <dynamic > Function (
11- RequestContext context,
12- String id,
13- );
10+ typedef ItemFetcher =
11+ Future <dynamic > Function (RequestContext context, String id);
1412
1513/// A function that fetches a paginated list of items.
16- typedef AllItemsReader = Future <PaginatedResponse <dynamic >> Function (
17- RequestContext context,
18- String ? userId,
19- Map <String , dynamic >? filter,
20- List <SortOption >? sort,
21- PaginationOptions ? pagination,
22- );
14+ typedef AllItemsReader =
15+ Future <PaginatedResponse <dynamic >> Function (
16+ RequestContext context,
17+ String ? userId,
18+ Map <String , dynamic >? filter,
19+ List <SortOption >? sort,
20+ PaginationOptions ? pagination,
21+ );
2322
2423/// A function that creates a new item.
25- typedef ItemCreator = Future <dynamic > Function (
26- RequestContext context,
27- dynamic item,
28- String ? userId,
29- );
24+ typedef ItemCreator =
25+ Future <dynamic > Function (
26+ RequestContext context,
27+ dynamic item,
28+ String ? userId,
29+ );
3030
3131/// A function that updates an existing item.
32- typedef ItemUpdater = Future <dynamic > Function (
33- RequestContext context,
34- String id,
35- dynamic item,
36- String ? userId,
37- );
32+ typedef ItemUpdater =
33+ Future <dynamic > Function (
34+ RequestContext context,
35+ String id,
36+ dynamic item,
37+ String ? userId,
38+ );
3839
3940/// A function that deletes an item by its ID.
40- typedef ItemDeleter = Future <void > Function (
41- RequestContext context,
42- String id,
43- String ? userId,
44- );
41+ typedef ItemDeleter =
42+ Future <void > Function (RequestContext context, String id, String ? userId);
4543
4644/// {@template data_operation_registry}
4745/// A centralized registry for all data handling functions (CRUD operations).
@@ -102,9 +100,8 @@ class DataOperationRegistry {
102100 c.read <DataRepository <Language >>().read (id: id, userId: null ),
103101 'user' : (c, id) =>
104102 c.read <DataRepository <User >>().read (id: id, userId: null ),
105- 'user_app_settings' : (c, id) => c
106- .read <DataRepository <UserAppSettings >>()
107- .read (id: id, userId: null ),
103+ 'user_app_settings' : (c, id) =>
104+ c.read <DataRepository <UserAppSettings >>().read (id: id, userId: null ),
108105 'user_content_preferences' : (c, id) => c
109106 .read <DataRepository <UserContentPreferences >>()
110107 .read (id: id, userId: null ),
@@ -119,40 +116,57 @@ class DataOperationRegistry {
119116 'headline' : (c, uid, f, s, p) => c
120117 .read <DataRepository <Headline >>()
121118 .readAll (userId: uid, filter: f, sort: s, pagination: p),
122- 'topic' : (c, uid, f, s, p) => c
123- .read <DataRepository <Topic >>()
124- .readAll (userId: uid, filter: f, sort: s, pagination: p),
125- 'source' : (c, uid, f, s, p) => c
126- .read <DataRepository <Source >>()
127- .readAll (userId: uid, filter: f, sort: s, pagination: p),
128- 'country' : (c, uid, f, s, p) => c
129- .read <DataRepository <Country >>()
130- .readAll (userId: uid, filter: f, sort: s, pagination: p),
119+ 'topic' : (c, uid, f, s, p) => c.read <DataRepository <Topic >>().readAll (
120+ userId: uid,
121+ filter: f,
122+ sort: s,
123+ pagination: p,
124+ ),
125+ 'source' : (c, uid, f, s, p) => c.read <DataRepository <Source >>().readAll (
126+ userId: uid,
127+ filter: f,
128+ sort: s,
129+ pagination: p,
130+ ),
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+ ),
131137 'language' : (c, uid, f, s, p) => c
132138 .read <DataRepository <Language >>()
133139 .readAll (userId: uid, filter: f, sort: s, pagination: p),
134- 'user' : (c, uid, f, s, p) => c
135- .read <DataRepository <User >>()
136- .readAll (userId: uid, filter: f, sort: s, pagination: p),
140+ 'user' : (c, uid, f, s, p) => c.read <DataRepository <User >>().readAll (
141+ userId: uid,
142+ filter: f,
143+ sort: s,
144+ pagination: p,
145+ ),
137146 });
138147
139148 // --- Register Item Creators ---
140149 _itemCreators.addAll ({
141- 'headline' : (c, item, uid) => c
142- .read <DataRepository <Headline >>()
143- .create (item: item as Headline , userId: uid),
144- 'topic' : (c, item, uid) => c
145- .read <DataRepository <Topic >>()
146- .create (item: item as Topic , userId: uid),
147- 'source' : (c, item, uid) => c
148- .read <DataRepository <Source >>()
149- .create (item: item as Source , userId: uid),
150- 'country' : (c, item, uid) => c
151- .read <DataRepository <Country >>()
152- .create (item: item as Country , userId: uid),
153- 'language' : (c, item, uid) => c
154- .read <DataRepository <Language >>()
155- .create (item: item as Language , userId: uid),
150+ 'headline' : (c, item, uid) => c.read <DataRepository <Headline >>().create (
151+ item: item as Headline ,
152+ userId: uid,
153+ ),
154+ 'topic' : (c, item, uid) => c.read <DataRepository <Topic >>().create (
155+ item: item as Topic ,
156+ userId: uid,
157+ ),
158+ 'source' : (c, item, uid) => c.read <DataRepository <Source >>().create (
159+ item: item as Source ,
160+ userId: uid,
161+ ),
162+ 'country' : (c, item, uid) => c.read <DataRepository <Country >>().create (
163+ item: item as Country ,
164+ userId: uid,
165+ ),
166+ 'language' : (c, item, uid) => c.read <DataRepository <Language >>().create (
167+ item: item as Language ,
168+ userId: uid,
169+ ),
156170 'remote_config' : (c, item, uid) => c
157171 .read <DataRepository <RemoteConfig >>()
158172 .create (item: item as RemoteConfig , userId: uid),
@@ -163,15 +177,21 @@ class DataOperationRegistry {
163177 'headline' : (c, id, item, uid) => c
164178 .read <DataRepository <Headline >>()
165179 .update (id: id, item: item as Headline , userId: uid),
166- 'topic' : (c, id, item, uid) => c
167- .read <DataRepository <Topic >>()
168- .update (id: id, item: item as Topic , userId: uid),
169- 'source' : (c, id, item, uid) => c
170- .read <DataRepository <Source >>()
171- .update (id: id, item: item as Source , userId: uid),
172- 'country' : (c, id, item, uid) => c
173- .read <DataRepository <Country >>()
174- .update (id: id, item: item as Country , userId: uid),
180+ 'topic' : (c, id, item, uid) => c.read <DataRepository <Topic >>().update (
181+ id: id,
182+ item: item as Topic ,
183+ userId: uid,
184+ ),
185+ 'source' : (c, id, item, uid) => c.read <DataRepository <Source >>().update (
186+ id: id,
187+ item: item as Source ,
188+ userId: uid,
189+ ),
190+ 'country' : (c, id, item, uid) => c.read <DataRepository <Country >>().update (
191+ id: id,
192+ item: item as Country ,
193+ userId: uid,
194+ ),
175195 'language' : (c, id, item, uid) => c
176196 .read <DataRepository <Language >>()
177197 .update (id: id, item: item as Language , userId: uid),
@@ -208,9 +228,8 @@ class DataOperationRegistry {
208228 c.read <DataRepository <Language >>().delete (id: id, userId: uid),
209229 'user' : (c, id, uid) =>
210230 c.read <DataRepository <User >>().delete (id: id, userId: uid),
211- 'user_app_settings' : (c, id, uid) => c
212- .read <DataRepository <UserAppSettings >>()
213- .delete (id: id, userId: uid),
231+ 'user_app_settings' : (c, id, uid) =>
232+ c.read <DataRepository <UserAppSettings >>().delete (id: id, userId: uid),
214233 'user_content_preferences' : (c, id, uid) => c
215234 .read <DataRepository <UserContentPreferences >>()
216235 .delete (id: id, userId: uid),
0 commit comments