@@ -279,6 +279,9 @@ async function getMembers(organizationId, page) {
279279 */
280280async function getMembersPaginated ( organizationId , options ) {
281281 const currentPage = options ?. page || 1
282+ const sort = options ?. sort || 'name'
283+ const order = options ?. order || 'asc'
284+ const perPage = options ?. perPage || DEFAULT_PAGE_SIZE
282285
283286 // Sub-query for all org teams
284287 const allOrgTeamsQuery = db ( 'organization_team' )
@@ -291,18 +294,20 @@ async function getMembersPaginated(organizationId, options) {
291294 . select ( 'member.osm_id as id' , 'osm_users.name' )
292295 . where ( 'member.team_id' , 'in' , allOrgTeamsQuery )
293296 . groupBy ( 'member.osm_id' , 'osm_users.name' )
294- . orderBy ( 'member.osm_id' )
295297
296298 // Apply search
297299 if ( options . search ) {
298300 query = query . whereILike ( 'osm_users.name' , `%${ options . search } %` )
299301 }
300302
303+ // Apply sort
304+ query = query . orderBy ( sort , order )
305+
301306 // Add pagination
302307 query = query . paginate ( {
303308 isLengthAware : true ,
304309 currentPage,
305- perPage : DEFAULT_PAGE_SIZE ,
310+ perPage,
306311 } )
307312
308313 return query
@@ -442,12 +447,17 @@ async function getOrgStaff(options) {
442447 * @param {Object } options.osmId - filter by osm id
443448 */
444449async function getOrgStaffPaginated ( organizationId , options = { } ) {
450+ const currentPage = options ?. page || 1
451+ const sort = options ?. sort || 'name'
452+ const order = options ?. order || 'asc'
453+ const perPage = options ?. perPage || DEFAULT_PAGE_SIZE
454+
445455 // Get owners
446456 let ownerQuery = db ( 'organization_owner' )
447457 . join ( 'osm_users' , 'organization_owner.osm_id' , 'osm_users.id' )
448458 . select (
449459 'organization_owner.organization_id' ,
450- 'organization_owner.osm_id' ,
460+ 'organization_owner.osm_id as id ' ,
451461 db . raw ( "'owner' as type" ) ,
452462 'osm_users.name'
453463 )
@@ -463,7 +473,7 @@ async function getOrgStaffPaginated(organizationId, options = {}) {
463473 . join ( 'osm_users' , 'organization_manager.osm_id' , 'osm_users.id' )
464474 . select (
465475 'organization_manager.organization_id' ,
466- 'organization_manager.osm_id' ,
476+ 'organization_manager.osm_id as id ' ,
467477 db . raw ( "'manager' as type" ) ,
468478 'osm_users.name'
469479 )
@@ -486,11 +496,14 @@ async function getOrgStaffPaginated(organizationId, options = {}) {
486496 // Unite owner and manager queries
487497 let staffQuery = ownerQuery . unionAll ( managerQuery )
488498
499+ // Apply sort
500+ staffQuery = staffQuery . orderBy ( sort , order )
501+
489502 // Execute staff query with pagination
490503 return await staffQuery . paginate ( {
491504 isLengthAware : true ,
492- currentPage : options . page || 1 ,
493- perPage : options . perPage || DEFAULT_PAGE_SIZE ,
505+ currentPage,
506+ perPage,
494507 } )
495508}
496509
0 commit comments