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/services/dashboard_summary_service.dart' ;
5
4
import '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' ;
6
6
7
7
// --- Typedefs for Data Operations ---
8
8
9
9
/// 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);
14
12
15
13
/// 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
+ );
23
22
24
23
/// 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
+ );
30
30
31
31
/// 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
+ );
38
39
39
40
/// 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);
45
43
46
44
/// {@template data_operation_registry}
47
45
/// A centralized registry for all data handling functions (CRUD operations).
@@ -102,9 +100,8 @@ class DataOperationRegistry {
102
100
c.read <DataRepository <Language >>().read (id: id, userId: null ),
103
101
'user' : (c, id) =>
104
102
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 ),
108
105
'user_content_preferences' : (c, id) => c
109
106
.read <DataRepository <UserContentPreferences >>()
110
107
.read (id: id, userId: null ),
@@ -119,40 +116,57 @@ class DataOperationRegistry {
119
116
'headline' : (c, uid, f, s, p) => c
120
117
.read <DataRepository <Headline >>()
121
118
.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
+ ),
131
137
'language' : (c, uid, f, s, p) => c
132
138
.read <DataRepository <Language >>()
133
139
.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
+ ),
137
146
});
138
147
139
148
// --- Register Item Creators ---
140
149
_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
+ ),
156
170
'remote_config' : (c, item, uid) => c
157
171
.read <DataRepository <RemoteConfig >>()
158
172
.create (item: item as RemoteConfig , userId: uid),
@@ -163,15 +177,21 @@ class DataOperationRegistry {
163
177
'headline' : (c, id, item, uid) => c
164
178
.read <DataRepository <Headline >>()
165
179
.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
+ ),
175
195
'language' : (c, id, item, uid) => c
176
196
.read <DataRepository <Language >>()
177
197
.update (id: id, item: item as Language , userId: uid),
@@ -208,9 +228,8 @@ class DataOperationRegistry {
208
228
c.read <DataRepository <Language >>().delete (id: id, userId: uid),
209
229
'user' : (c, id, uid) =>
210
230
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),
214
233
'user_content_preferences' : (c, id, uid) => c
215
234
.read <DataRepository <UserContentPreferences >>()
216
235
.delete (id: id, userId: uid),
0 commit comments