@@ -109,12 +109,34 @@ Future<Response> _handleGet(
109109 final queryParams = context.request.uri.queryParameters;
110110 final startAfterId = queryParams['startAfterId' ];
111111 final limitParam = queryParams['limit' ];
112+ final sortBy = queryParams['sortBy' ];
113+ final sortOrderRaw = queryParams['sortOrder' ]? .toLowerCase ();
112114 final limit = limitParam != null ? int .tryParse (limitParam) : null ;
113115
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+ 114129 final specificQueryForClient = < String , String > {};
115130 final Set <String > allowedKeys;
116131 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+ )
118140 .toSet ();
119141
120142 switch (modelName) {
@@ -207,6 +229,8 @@ Future<Response> _handleGet(
207229 userId: userIdForRepoCall,
208230 startAfterId: startAfterId,
209231 limit: limit,
232+ sortBy: sortBy,
233+ sortOrder: sortOrder,
210234 );
211235 case 'category' :
212236 final repo = context.read <HtDataRepository <Category >>();
@@ -215,6 +239,8 @@ Future<Response> _handleGet(
215239 userId: userIdForRepoCall,
216240 startAfterId: startAfterId,
217241 limit: limit,
242+ sortBy: sortBy,
243+ sortOrder: sortOrder,
218244 );
219245 case 'source' :
220246 final repo = context.read <HtDataRepository <Source >>();
@@ -223,6 +249,8 @@ Future<Response> _handleGet(
223249 userId: userIdForRepoCall,
224250 startAfterId: startAfterId,
225251 limit: limit,
252+ sortBy: sortBy,
253+ sortOrder: sortOrder,
226254 );
227255 case 'country' :
228256 final repo = context.read <HtDataRepository <Country >>();
@@ -231,6 +259,8 @@ Future<Response> _handleGet(
231259 userId: userIdForRepoCall,
232260 startAfterId: startAfterId,
233261 limit: limit,
262+ sortBy: sortBy,
263+ sortOrder: sortOrder,
234264 );
235265 case 'user' :
236266 final repo = context.read <HtDataRepository <User >>();
@@ -239,6 +269,8 @@ Future<Response> _handleGet(
239269 userId: userIdForRepoCall,
240270 startAfterId: startAfterId,
241271 limit: limit,
272+ sortBy: sortBy,
273+ sortOrder: sortOrder,
242274 );
243275 case 'user_app_settings' :
244276 final repo = context.read <HtDataRepository <UserAppSettings >>();
@@ -247,6 +279,8 @@ Future<Response> _handleGet(
247279 userId: userIdForRepoCall,
248280 startAfterId: startAfterId,
249281 limit: limit,
282+ sortBy: sortBy,
283+ sortOrder: sortOrder,
250284 );
251285 case 'user_content_preferences' :
252286 final repo = context.read <HtDataRepository <UserContentPreferences >>();
@@ -255,6 +289,8 @@ Future<Response> _handleGet(
255289 userId: userIdForRepoCall,
256290 startAfterId: startAfterId,
257291 limit: limit,
292+ sortBy: sortBy,
293+ sortOrder: sortOrder,
258294 );
259295 case 'app_config' :
260296 final repo = context.read <HtDataRepository <AppConfig >>();
@@ -263,6 +299,8 @@ Future<Response> _handleGet(
263299 userId: userIdForRepoCall,
264300 startAfterId: startAfterId,
265301 limit: limit,
302+ sortBy: sortBy,
303+ sortOrder: sortOrder,
266304 );
267305 default :
268306 throw OperationFailedException (
0 commit comments