@@ -109,12 +109,34 @@ Future<Response> _handleGet(
109
109
final queryParams = context.request.uri.queryParameters;
110
110
final startAfterId = queryParams['startAfterId' ];
111
111
final limitParam = queryParams['limit' ];
112
+ final sortBy = queryParams['sortBy' ];
113
+ final sortOrderRaw = queryParams['sortOrder' ]? .toLowerCase ();
112
114
final limit = limitParam != null ? int .tryParse (limitParam) : null ;
113
115
116
+ SortOrder ? sortOrder;
117
+ if (sortOrderRaw != null ) {
118
+ if (sortOrderRaw == 'asc' ) {
119
+ sortOrder = SortOrder .asc;
120
+ } else if (sortOrderRaw == 'desc' ) {
121
+ sortOrder = SortOrder .desc;
122
+ } else {
123
+ throw const BadRequestException (
124
+ 'Invalid "sortOrder" parameter. Must be "asc" or "desc".' ,
125
+ );
126
+ }
127
+ }
128
+
114
129
final specificQueryForClient = < String , String > {};
115
130
final Set <String > allowedKeys;
116
131
final receivedKeys = queryParams.keys
117
- .where ((k) => k != 'model' && k != 'startAfterId' && k != 'limit' )
132
+ .where (
133
+ (k) =>
134
+ k != 'model' &&
135
+ k != 'startAfterId' &&
136
+ k != 'limit' &&
137
+ k != 'sortBy' &&
138
+ k != 'sortOrder' ,
139
+ )
118
140
.toSet ();
119
141
120
142
switch (modelName) {
@@ -207,6 +229,8 @@ Future<Response> _handleGet(
207
229
userId: userIdForRepoCall,
208
230
startAfterId: startAfterId,
209
231
limit: limit,
232
+ sortBy: sortBy,
233
+ sortOrder: sortOrder,
210
234
);
211
235
case 'category' :
212
236
final repo = context.read <HtDataRepository <Category >>();
@@ -215,6 +239,8 @@ Future<Response> _handleGet(
215
239
userId: userIdForRepoCall,
216
240
startAfterId: startAfterId,
217
241
limit: limit,
242
+ sortBy: sortBy,
243
+ sortOrder: sortOrder,
218
244
);
219
245
case 'source' :
220
246
final repo = context.read <HtDataRepository <Source >>();
@@ -223,6 +249,8 @@ Future<Response> _handleGet(
223
249
userId: userIdForRepoCall,
224
250
startAfterId: startAfterId,
225
251
limit: limit,
252
+ sortBy: sortBy,
253
+ sortOrder: sortOrder,
226
254
);
227
255
case 'country' :
228
256
final repo = context.read <HtDataRepository <Country >>();
@@ -231,6 +259,8 @@ Future<Response> _handleGet(
231
259
userId: userIdForRepoCall,
232
260
startAfterId: startAfterId,
233
261
limit: limit,
262
+ sortBy: sortBy,
263
+ sortOrder: sortOrder,
234
264
);
235
265
case 'user' :
236
266
final repo = context.read <HtDataRepository <User >>();
@@ -239,6 +269,8 @@ Future<Response> _handleGet(
239
269
userId: userIdForRepoCall,
240
270
startAfterId: startAfterId,
241
271
limit: limit,
272
+ sortBy: sortBy,
273
+ sortOrder: sortOrder,
242
274
);
243
275
case 'user_app_settings' :
244
276
final repo = context.read <HtDataRepository <UserAppSettings >>();
@@ -247,6 +279,8 @@ Future<Response> _handleGet(
247
279
userId: userIdForRepoCall,
248
280
startAfterId: startAfterId,
249
281
limit: limit,
282
+ sortBy: sortBy,
283
+ sortOrder: sortOrder,
250
284
);
251
285
case 'user_content_preferences' :
252
286
final repo = context.read <HtDataRepository <UserContentPreferences >>();
@@ -255,6 +289,8 @@ Future<Response> _handleGet(
255
289
userId: userIdForRepoCall,
256
290
startAfterId: startAfterId,
257
291
limit: limit,
292
+ sortBy: sortBy,
293
+ sortOrder: sortOrder,
258
294
);
259
295
case 'app_config' :
260
296
final repo = context.read <HtDataRepository <AppConfig >>();
@@ -263,6 +299,8 @@ Future<Response> _handleGet(
263
299
userId: userIdForRepoCall,
264
300
startAfterId: startAfterId,
265
301
limit: limit,
302
+ sortBy: sortBy,
303
+ sortOrder: sortOrder,
266
304
);
267
305
default :
268
306
throw OperationFailedException (
0 commit comments