diff --git a/src/routes/relations.ts b/src/routes/relations.ts index cddd364dfe..558afd7f4c 100644 --- a/src/routes/relations.ts +++ b/src/routes/relations.ts @@ -11,18 +11,15 @@ const router = express.Router(); router.post( '/', useCollection('directus_relations'), + sanitizeQuery, + validateQuery, asyncHandler(async (req, res) => { - const item = await RelationsService.createRelation(req.body, req.sanitizedQuery); - - ActivityService.createActivity({ - action: ActivityService.Action.CREATE, - collection: req.collection, - item: item.id, + const primaryKey = await RelationsService.createRelation(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 RelationsService.readRelation(primaryKey, req.sanitizedQuery); return res.json({ data: item }); }) ); @@ -52,22 +49,15 @@ router.get( router.patch( '/:pk', useCollection('directus_relations'), + sanitizeQuery, + validateQuery, asyncHandler(async (req, res) => { - const item = await RelationsService.updateRelation( - req.params.pk, - req.body, - req.sanitizedQuery - ); - - ActivityService.createActivity({ - action: ActivityService.Action.UPDATE, - collection: req.collection, - item: item.id, + const primaryKey = await RelationsService.updateRelation(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 RelationsService.readRelation(primaryKey, req.sanitizedQuery); return res.json({ data: item }); }) ); @@ -76,15 +66,10 @@ router.delete( '/:pk', useCollection('directus_relations'), asyncHandler(async (req, res) => { - await RelationsService.deleteRelation(req.params.pk); - - ActivityService.createActivity({ - action: ActivityService.Action.DELETE, - collection: req.collection, - item: req.params.pk, + await RelationsService.deleteRelation(Number(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/services/activity.ts b/src/services/activity.ts index 552f006b8f..ca80fa23d8 100644 --- a/src/services/activity.ts +++ b/src/services/activity.ts @@ -11,7 +11,7 @@ export enum Action { AUTHENTICATE = 'authenticate', } -export const createActivity = async (data: Record, query?: Query) => { +export const createActivity = async (data: Record) => { return await ItemsService.createItem('directus_activity', data); }; diff --git a/src/services/relations.ts b/src/services/relations.ts index 9997fab2bf..9c359f2d24 100644 --- a/src/services/relations.ts +++ b/src/services/relations.ts @@ -1,9 +1,8 @@ -import { Query } from '../types/query'; +import { Accountability, Query } from '../types'; import * as ItemsService from './items'; -export const createRelation = async (data: Record, query: Query) => { - const primaryKey = await ItemsService.createItem('directus_relations', data); - return ItemsService.readItem('directus_relations', primaryKey, query); +export const createRelation = async (data: Record, accountability: Accountability) => { + return await ItemsService.createItem('directus_relations', data, accountability); }; export const readRelations = async (query: Query) => { @@ -17,12 +16,11 @@ export const readRelation = async (pk: string | number, query: Query) => { export const updateRelation = async ( pk: string | number, data: Record, - query: Query + accountability: Accountability ) => { - const primaryKey = await ItemsService.updateItem('directus_relations', pk, data); - return ItemsService.readItem('directus_relations', primaryKey, query); + return await ItemsService.updateItem('directus_relations', pk, data, accountability); }; -export const deleteRelation = async (pk: string | number) => { - await ItemsService.deleteItem('directus_relations', pk); +export const deleteRelation = async (pk: number, accountability: Accountability) => { + await ItemsService.deleteItem('directus_relations', pk, accountability); };