From da732becb63c3d81efd61f50f3b23e46a051c945 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Wed, 14 Feb 2024 00:52:17 +0100 Subject: [PATCH] feat: Implement api/v1/users API endpoint --- .../src/controllers/api/v1/users/get-users.js | 18 ++++++++++++++++++ packages/backend/src/routes/api/v1/users.js | 2 ++ 2 files changed, 20 insertions(+) create mode 100644 packages/backend/src/controllers/api/v1/users/get-users.js diff --git a/packages/backend/src/controllers/api/v1/users/get-users.js b/packages/backend/src/controllers/api/v1/users/get-users.js new file mode 100644 index 00000000..11728f90 --- /dev/null +++ b/packages/backend/src/controllers/api/v1/users/get-users.js @@ -0,0 +1,18 @@ +import { renderObject } from '../../../../helpers/renderer.js'; +import User from '../../../../models/user.js'; +import paginateRest from '../../../../helpers/pagination-rest.js'; + +export default async (request, response) => { + const usersQuery = User.query() + .leftJoinRelated({ + role: true, + }) + .withGraphFetched({ + role: true, + }) + .orderBy('full_name', 'asc'); + + const users = await paginateRest(usersQuery, request.query.page); + + renderObject(response, users); +}; diff --git a/packages/backend/src/routes/api/v1/users.js b/packages/backend/src/routes/api/v1/users.js index 08bc8f65..fb1ece18 100644 --- a/packages/backend/src/routes/api/v1/users.js +++ b/packages/backend/src/routes/api/v1/users.js @@ -3,9 +3,11 @@ import { authenticateUser } from '../../../helpers/authentication.js'; import { authorizeUser } from '../../../helpers/authorization.js'; import getCurrentUserAction from '../../../controllers/api/v1/users/get-current-user.js'; import getUserAction from '../../../controllers/api/v1/users/get-user.js'; +import getUsersAction from '../../../controllers/api/v1/users/get-users.js'; const router = Router(); +router.get('/', authenticateUser, authorizeUser, getUsersAction); router.get('/me', authenticateUser, getCurrentUserAction); router.get('/:userId', authenticateUser, authorizeUser, getUserAction);