mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Add activity (read) endpoints
This commit is contained in:
@@ -5,12 +5,14 @@ import express from 'express';
|
||||
import bodyParser from 'body-parser';
|
||||
import { errorHandler } from './error';
|
||||
import itemsRouter from './routes/items';
|
||||
import activityRouter from './routes/activity';
|
||||
import notFoundHandler from './routes/not-found';
|
||||
|
||||
const app = express()
|
||||
.disable('x-powered-by')
|
||||
.use(bodyParser.json())
|
||||
.use('/items', itemsRouter)
|
||||
.use('/activity', activityRouter)
|
||||
.use(notFoundHandler)
|
||||
.use(errorHandler);
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import asyncHandler from 'express-async-handler';
|
||||
import APIError, { ErrorCode } from '../error';
|
||||
|
||||
const validateQuery: RequestHandler = asyncHandler(async (req, res, next) => {
|
||||
if (!res.locals.collection) return next();
|
||||
if (!req.params.collection) return next();
|
||||
if (!res.locals.query) return next();
|
||||
|
||||
const query: Query = res.locals.query;
|
||||
@@ -27,14 +27,14 @@ const validateQuery: RequestHandler = asyncHandler(async (req, res, next) => {
|
||||
query.sort.forEach((sort) => fieldsToCheck.add(sort.column));
|
||||
}
|
||||
|
||||
const fieldsExist = await hasFields(res.locals.collection, Array.from(fieldsToCheck));
|
||||
const fieldsExist = await hasFields(req.params.collection, Array.from(fieldsToCheck));
|
||||
|
||||
Array.from(fieldsToCheck).forEach((field, index) => {
|
||||
const exists = fieldsExist[index];
|
||||
if (exists === false)
|
||||
throw new APIError(
|
||||
ErrorCode.FIELD_NOT_FOUND,
|
||||
`Field ${field} doesn't exist in ${res.locals.collection}.`
|
||||
`Field ${field} doesn't exist in ${req.params.collection}.`
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
34
src/routes/activity.ts
Normal file
34
src/routes/activity.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import express from 'express';
|
||||
import asyncHandler from 'express-async-handler';
|
||||
import sanitizeQuery from '../middleware/sanitize-query';
|
||||
import validateQuery from '../middleware/validate-query';
|
||||
import { readActivities, readActivity } from '../services/activity';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get(
|
||||
'/',
|
||||
sanitizeQuery,
|
||||
validateQuery,
|
||||
asyncHandler(async (req, res) => {
|
||||
const records = await readActivities(res.locals.query);
|
||||
return res.json({
|
||||
data: records,
|
||||
});
|
||||
})
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/:pk',
|
||||
sanitizeQuery,
|
||||
validateQuery,
|
||||
asyncHandler(async (req, res) => {
|
||||
const record = await readActivity(req.params.pk, res.locals.query);
|
||||
|
||||
return res.json({
|
||||
data: record,
|
||||
});
|
||||
})
|
||||
);
|
||||
|
||||
export default router;
|
||||
10
src/services/activity.ts
Normal file
10
src/services/activity.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Query } from '../types/query';
|
||||
import * as ItemsService from './items';
|
||||
|
||||
export const readActivities = async (query: Query) => {
|
||||
return await ItemsService.readItems('directus_activity', query);
|
||||
};
|
||||
|
||||
export const readActivity = async (pk: string | number, query: Query) => {
|
||||
return await ItemsService.readItem('directus_activity', pk, query);
|
||||
};
|
||||
Reference in New Issue
Block a user