diff --git a/src/routes/fields.ts b/src/routes/fields.ts index c1dbb0554e..658a168d6b 100644 --- a/src/routes/fields.ts +++ b/src/routes/fields.ts @@ -61,7 +61,11 @@ router.post( const field: Partial = req.body; - const createdField = await FieldsService.createField(req.collection, field); + const createdField = await FieldsService.createField(req.collection, field, { + ip: req.ip, + userAgent: req.get('user-agent'), + user: req.user, + }); res.json({ data: createdField }); }) diff --git a/src/services/fields.ts b/src/services/fields.ts index 4050d68737..ce0f0f784f 100644 --- a/src/services/fields.ts +++ b/src/services/fields.ts @@ -1,6 +1,8 @@ import database, { schemaInspector } from '../database'; import { Field } from '../types/field'; import { uniq } from 'lodash'; +import { Accountability } from '../types'; +import * as ItemsService from '../services/items'; export const fieldsInCollection = async (collection: string) => { const [fields, columns] = await Promise.all([ @@ -55,20 +57,30 @@ export const readOne = async (collection: string, field: string) => { return data; }; -export const createField = async (collection: string, field: Partial) => { - await database.schema.alterTable('articles', (table) => { +export const createField = async ( + collection: string, + field: Partial, + accountability: Accountability +) => { + await database.schema.alterTable(collection, (table) => { table.specificType(field.field, field.database.type); /** @todo add support for other database info (length etc) */ }); if (field.system) { - await database('directus_fields').insert({ - ...field.system, - collection: collection, - field: field.field, - }); + await ItemsService.createItem( + 'directus_fields', + { + ...field.system, + collection: collection, + field: field.field, + }, + accountability + ); } const createdField = await readOne(collection, field.field); return createdField; }; + +/** @todo add update / delete field */