From e89dff9bc272d0188b8fd54df19479e71abd04d2 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Thu, 18 Jun 2020 15:48:50 -0400 Subject: [PATCH] Add roles endpoint --- src/app.ts | 2 ++ src/routes/roles.ts | 53 +++++++++++++++++++++++++++++++++++++++++++ src/services/roles.ts | 22 ++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 src/routes/roles.ts create mode 100644 src/services/roles.ts diff --git a/src/app.ts b/src/app.ts index c54cf12bfd..071ad5f933 100644 --- a/src/app.ts +++ b/src/app.ts @@ -11,6 +11,7 @@ import filesRouter from './routes/files'; import foldersRouter from './routes/folders'; import relationsRouter from './routes/relations'; import revisionsRouter from './routes/revisions'; +import rolesRouter from './routes/roles'; import notFoundHandler from './routes/not-found'; const app = express() @@ -23,6 +24,7 @@ const app = express() .use('/folders', foldersRouter) .use('/relations', relationsRouter) .use('/revisions', revisionsRouter) + .use('/roles', rolesRouter) .use(notFoundHandler) .use(errorHandler); diff --git a/src/routes/roles.ts b/src/routes/roles.ts new file mode 100644 index 0000000000..05036876e6 --- /dev/null +++ b/src/routes/roles.ts @@ -0,0 +1,53 @@ +import express from 'express'; +import asyncHandler from 'express-async-handler'; +import sanitizeQuery from '../middleware/sanitize-query'; +import validateQuery from '../middleware/validate-query'; +import * as RolesService from '../services/roles'; + +const router = express.Router(); + +router.post( + '/', + asyncHandler(async (req, res) => { + const records = await RolesService.createRole(req.body, res.locals.query); + return res.json({ data: records }); + }) +); + +router.get( + '/', + sanitizeQuery, + validateQuery, + asyncHandler(async (req, res) => { + const records = await RolesService.readRoles(res.locals.query); + return res.json({ data: records }); + }) +); + +router.get( + '/:pk', + sanitizeQuery, + validateQuery, + asyncHandler(async (req, res) => { + const record = await RolesService.readRole(req.params.pk, res.locals.query); + return res.json({ data: record }); + }) +); + +router.patch( + '/:pk', + asyncHandler(async (req, res) => { + const records = await RolesService.updateRole(req.params.pk, req.body, res.locals.query); + return res.json({ data: records }); + }) +); + +router.delete( + '/:pk', + asyncHandler(async (req, res) => { + await RolesService.deleteRole(req.params.pk); + return res.status(200).end(); + }) +); + +export default router; diff --git a/src/services/roles.ts b/src/services/roles.ts new file mode 100644 index 0000000000..be3c9e099c --- /dev/null +++ b/src/services/roles.ts @@ -0,0 +1,22 @@ +import { Query } from '../types/query'; +import * as ItemsService from './items'; + +export const createRole = async (data: Record, query: Query) => { + return await ItemsService.createItem('directus_roles', data, query); +}; + +export const readRoles = async (query: Query) => { + return await ItemsService.readItems('directus_roles', query); +}; + +export const readRole = async (pk: string | number, query: Query) => { + return await ItemsService.readItem('directus_roles', pk, query); +}; + +export const updateRole = async (pk: string | number, data: Record, query: Query) => { + return await ItemsService.updateItem('directus_roles', pk, data, query); +}; + +export const deleteRole = async (pk: string | number) => { + await ItemsService.deleteItem('directus_roles', pk); +};