From b8849bcafb9fd2a59ebd33dfef188a523223fbd9 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Thu, 9 Jul 2020 13:31:45 -0400 Subject: [PATCH] Add revisions for settings, fix types in files/folders --- src/routes/files.ts | 18 ++++++------------ src/routes/relations.ts | 1 - src/routes/roles.ts | 41 +++++++++++++++------------------------- src/routes/settings.ts | 17 +++++++++++++---- src/services/folders.ts | 11 +++++++---- src/services/roles.ts | 20 +++++++++++--------- src/services/settings.ts | 8 ++++---- 7 files changed, 56 insertions(+), 60 deletions(-) diff --git a/src/routes/files.ts b/src/routes/files.ts index 8134e9fe75..52a016a134 100644 --- a/src/routes/files.ts +++ b/src/routes/files.ts @@ -55,15 +55,16 @@ const multipartHandler = (operation: 'create' | 'update') => try { if (operation === 'create') { - const file = await FilesService.createFile(payload, fileStream, { + const pk = await FilesService.createFile(payload, fileStream, { ip: req.ip, userAgent: req.get('user-agent'), user: req.user, }); + const file = await FilesService.readFile(pk, req.sanitizedQuery); savedFiles.push(file); } else { - const file = await FilesService.updateFile( + const pk = await FilesService.updateFile( req.params.pk, payload, { @@ -73,15 +74,7 @@ const multipartHandler = (operation: 'create' | 'update') => }, fileStream ); - - ActivityService.createActivity({ - action: ActivityService.Action.UPDATE, - collection: 'directus_files', - item: file.id, - ip: req.ip, - user_agent: req.get('user-agent'), - action_by: req.user, - }); + const file = await FilesService.readFile(pk, req.sanitizedQuery); savedFiles.push(file); } @@ -134,11 +127,12 @@ router.patch( if (req.is('multipart/form-data')) { file = await multipartHandler('update')(req, res, next); } else { - file = await FilesService.updateFile(req.params.pk, req.body, { + const pk = await FilesService.updateFile(req.params.pk, req.body, { ip: req.ip, userAgent: req.get('user-agent'), user: req.user, }); + file = await FilesService.readFile(pk, req.sanitizedQuery); } return res.status(200).json({ data: file }); diff --git a/src/routes/relations.ts b/src/routes/relations.ts index 558afd7f4c..2460812358 100644 --- a/src/routes/relations.ts +++ b/src/routes/relations.ts @@ -4,7 +4,6 @@ import sanitizeQuery from '../middleware/sanitize-query'; import validateQuery from '../middleware/validate-query'; import * as RelationsService from '../services/relations'; import useCollection from '../middleware/use-collection'; -import * as ActivityService from '../services/activity'; const router = express.Router(); diff --git a/src/routes/roles.ts b/src/routes/roles.ts index c43267b6d1..4f3b0c006c 100644 --- a/src/routes/roles.ts +++ b/src/routes/roles.ts @@ -11,18 +11,15 @@ const router = express.Router(); router.post( '/', useCollection('directus_roles'), + sanitizeQuery, + validateQuery, asyncHandler(async (req, res) => { - const item = await RolesService.createRole(req.body, req.sanitizedQuery); - - ActivityService.createActivity({ - action: ActivityService.Action.CREATE, - collection: req.collection, - item: item.id, + const primaryKey = await RolesService.createRole(req.body, { ip: req.ip, - user_agent: req.get('user-agent'), - action_by: req.user, + userAgent: req.get('user-agent'), + user: req.user, }); - + const item = await RolesService.readRole(primaryKey, req.sanitizedQuery); return res.json({ data: item }); }) ); @@ -52,18 +49,15 @@ router.get( router.patch( '/:pk', useCollection('directus_roles'), + sanitizeQuery, + validateQuery, asyncHandler(async (req, res) => { - const item = await RolesService.updateRole(req.params.pk, req.body, req.sanitizedQuery); - - ActivityService.createActivity({ - action: ActivityService.Action.UPDATE, - collection: req.collection, - item: item.id, + const primaryKey = await RolesService.updateRole(req.params.pk, req.body, { ip: req.ip, - user_agent: req.get('user-agent'), - action_by: req.user, + userAgent: req.get('user-agent'), + user: req.user, }); - + const item = await RolesService.readRole(primaryKey, req.sanitizedQuery); return res.json({ data: item }); }) ); @@ -72,15 +66,10 @@ router.delete( '/:pk', useCollection('directus_roles'), asyncHandler(async (req, res) => { - await RolesService.deleteRole(req.params.pk); - - ActivityService.createActivity({ - action: ActivityService.Action.DELETE, - collection: req.collection, - item: req.params.pk, + await RolesService.deleteRole(req.params.pk, { ip: req.ip, - user_agent: req.get('user-agent'), - action_by: req.user, + userAgent: req.get('user-agent'), + user: req.user, }); return res.status(200).end(); diff --git a/src/routes/settings.ts b/src/routes/settings.ts index a347df4507..7770dfa4c1 100644 --- a/src/routes/settings.ts +++ b/src/routes/settings.ts @@ -13,7 +13,7 @@ router.get( sanitizeQuery, validateQuery, asyncHandler(async (req, res) => { - const records = await SettingsService.readSettings(1, req.sanitizedQuery); + const records = await SettingsService.readSettings(req.sanitizedQuery); return res.json({ data: records }); }) ); @@ -21,13 +21,22 @@ router.get( router.patch( '/', useCollection('directus_settings'), + sanitizeQuery, + validateQuery, asyncHandler(async (req, res) => { - const records = await SettingsService.updateSettings( + const primaryKey = await SettingsService.updateSettings( req.params.pk /** @TODO Singleton */, req.body, - req.sanitizedQuery + { + ip: req.ip, + userAgent: req.get('user-agent'), + user: req.user, + } ); - return res.json({ data: records }); + + const record = await SettingsService.readSettings(req.sanitizedQuery); + + return res.json({ data: record }); }) ); diff --git a/src/services/folders.ts b/src/services/folders.ts index a966d4e437..fd471b7682 100644 --- a/src/services/folders.ts +++ b/src/services/folders.ts @@ -1,8 +1,11 @@ import * as ItemsService from './items'; import { Accountability, Query } from '../types'; -export const createFolder = async (data: Record, accountability: Accountability) => { - return await ItemsService.createItem('directus_folders', data, accountability); +export const createFolder = async ( + data: Record, + accountability: Accountability +): Promise => { + return (await ItemsService.createItem('directus_folders', data, accountability)) as string; }; export const readFolders = async (query: Query) => { @@ -17,8 +20,8 @@ export const updateFolder = async ( pk: string, data: Record, accountability: Accountability -) => { - return await ItemsService.updateItem('directus_folders', pk, data, accountability); +): Promise => { + return (await ItemsService.updateItem('directus_folders', pk, data, accountability)) as string; }; export const deleteFolder = async (pk: string, accountability: Accountability) => { diff --git a/src/services/roles.ts b/src/services/roles.ts index 63e9a77871..30b18f5f86 100644 --- a/src/services/roles.ts +++ b/src/services/roles.ts @@ -1,9 +1,8 @@ -import { Query } from '../types/query'; +import { Accountability, Query } from '../types'; import * as ItemsService from './items'; -export const createRole = async (data: Record, query: Query) => { - const primaryKey = await ItemsService.createItem('directus_roles', data); - return await ItemsService.readItem('directus_roles', primaryKey, query); +export const createRole = async (data: Record, accountability: Accountability) => { + return await ItemsService.createItem('directus_roles', data, accountability); }; export const readRoles = async (query: Query) => { @@ -14,11 +13,14 @@ 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) => { - const primaryKey = await ItemsService.updateItem('directus_roles', pk, data); - return await ItemsService.readItem('directus_roles', primaryKey, query); +export const updateRole = async ( + pk: string | number, + data: Record, + accountability: Accountability +) => { + return await ItemsService.updateItem('directus_roles', pk, data, accountability); }; -export const deleteRole = async (pk: string | number) => { - await ItemsService.deleteItem('directus_roles', pk); +export const deleteRole = async (pk: string | number, accountability: Accountability) => { + await ItemsService.deleteItem('directus_roles', pk, accountability); }; diff --git a/src/services/settings.ts b/src/services/settings.ts index 82c0b4befa..32837bce8a 100644 --- a/src/services/settings.ts +++ b/src/services/settings.ts @@ -1,7 +1,8 @@ import { Query } from '../types/query'; import * as ItemsService from './items'; +import { Accountability } from '../types'; -export const readSettings = async (pk: string | number, query: Query) => { +export const readSettings = async (query: Query) => { const settings = await ItemsService.readItems('directus_settings', { ...query, limit: 1, @@ -13,9 +14,8 @@ export const readSettings = async (pk: string | number, query: Query) => { export const updateSettings = async ( pk: string | number, data: Record, - query: Query + accountability: Accountability ) => { /** @NOTE I guess this can technically update _all_ items, as we expect there to only be one */ - const primaryKey = await ItemsService.updateItem('directus_settings', pk, data); - return await ItemsService.readItem('directus_settings', primaryKey, query); + return await ItemsService.updateItem('directus_settings', pk, data, accountability); };