directus
54 строки · 1.3 Кб
1import { isDirectusError } from '@directus/errors';
2import express from 'express';
3import { ErrorCode } from '@directus/errors';
4import { respond } from '../middleware/respond.js';
5import useCollection from '../middleware/use-collection.js';
6import { SettingsService } from '../services/settings.js';
7import asyncHandler from '../utils/async-handler.js';
8
9const router = express.Router();
10
11router.use(useCollection('directus_settings'));
12
13router.get(
14'/',
15asyncHandler(async (req, res, next) => {
16const service = new SettingsService({
17accountability: req.accountability,
18schema: req.schema,
19});
20
21const records = await service.readSingleton(req.sanitizedQuery);
22res.locals['payload'] = { data: records || null };
23return next();
24}),
25respond,
26);
27
28router.patch(
29'/',
30asyncHandler(async (req, res, next) => {
31const service = new SettingsService({
32accountability: req.accountability,
33schema: req.schema,
34});
35
36await service.upsertSingleton(req.body);
37
38try {
39const record = await service.readSingleton(req.sanitizedQuery);
40res.locals['payload'] = { data: record || null };
41} catch (error: any) {
42if (isDirectusError(error, ErrorCode.Forbidden)) {
43return next();
44}
45
46throw error;
47}
48
49return next();
50}),
51respond,
52);
53
54export default router;
55