directus

Форк
0
/
settings.ts 
54 строки · 1.3 Кб
1
import { isDirectusError } from '@directus/errors';
2
import express from 'express';
3
import { ErrorCode } from '@directus/errors';
4
import { respond } from '../middleware/respond.js';
5
import useCollection from '../middleware/use-collection.js';
6
import { SettingsService } from '../services/settings.js';
7
import asyncHandler from '../utils/async-handler.js';
8

9
const router = express.Router();
10

11
router.use(useCollection('directus_settings'));
12

13
router.get(
14
	'/',
15
	asyncHandler(async (req, res, next) => {
16
		const service = new SettingsService({
17
			accountability: req.accountability,
18
			schema: req.schema,
19
		});
20

21
		const records = await service.readSingleton(req.sanitizedQuery);
22
		res.locals['payload'] = { data: records || null };
23
		return next();
24
	}),
25
	respond,
26
);
27

28
router.patch(
29
	'/',
30
	asyncHandler(async (req, res, next) => {
31
		const service = new SettingsService({
32
			accountability: req.accountability,
33
			schema: req.schema,
34
		});
35

36
		await service.upsertSingleton(req.body);
37

38
		try {
39
			const record = await service.readSingleton(req.sanitizedQuery);
40
			res.locals['payload'] = { data: record || null };
41
		} catch (error: any) {
42
			if (isDirectusError(error, ErrorCode.Forbidden)) {
43
				return next();
44
			}
45

46
			throw error;
47
		}
48

49
		return next();
50
	}),
51
	respond,
52
);
53

54
export default router;
55

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.