mirror of
https://github.com/directus/directus.git
synced 2026-01-29 13:38:05 -05:00
Add revisions for settings, fix types in files/folders
This commit is contained in:
@@ -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 });
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 });
|
||||
})
|
||||
);
|
||||
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import * as ItemsService from './items';
|
||||
import { Accountability, Query } from '../types';
|
||||
|
||||
export const createFolder = async (data: Record<string, any>, accountability: Accountability) => {
|
||||
return await ItemsService.createItem('directus_folders', data, accountability);
|
||||
export const createFolder = async (
|
||||
data: Record<string, any>,
|
||||
accountability: Accountability
|
||||
): Promise<string> => {
|
||||
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<string, any>,
|
||||
accountability: Accountability
|
||||
) => {
|
||||
return await ItemsService.updateItem('directus_folders', pk, data, accountability);
|
||||
): Promise<string> => {
|
||||
return (await ItemsService.updateItem('directus_folders', pk, data, accountability)) as string;
|
||||
};
|
||||
|
||||
export const deleteFolder = async (pk: string, accountability: Accountability) => {
|
||||
|
||||
@@ -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<string, any>, query: Query) => {
|
||||
const primaryKey = await ItemsService.createItem('directus_roles', data);
|
||||
return await ItemsService.readItem('directus_roles', primaryKey, query);
|
||||
export const createRole = async (data: Record<string, any>, 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<string, any>, 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<string, any>,
|
||||
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);
|
||||
};
|
||||
|
||||
@@ -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<string, any>,
|
||||
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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user