mirror of
https://github.com/directus/directus.git
synced 2026-02-11 22:14:56 -05:00
Finalize interface names (#5521)
* Rename button-links->presentation-links * Rename checkboxes->select-multiple-checkbox * Rename code->input-code * Rename checkboxes files * Rename color->select-color * Rename divider->presentation-divider * Rename dropdown-multiselect->select-multiple-dropdown * Rename hash->input-hash * Rename icon->select-icon * Rename image->file-image * Rename m2a-builder->list-m2a * Rename many-to-many->list-m2m * Rename many-to-one->select-dropdown-m2o * Rename markdown->input-rich-text-md * Rename notice->presentation-notice * Rename one-to-many->list-o2m * Rename radio-buttons->select-radio * Rename repeater->list * Rename text-input->input * Rename textarea->input-multiline * Rename toggle->boolean * Rename tree-view->list-o2m-tree-view * Rename wysiwyg->input-rich-text-html * Use correct interfaces in system defaults * Rename collection->system-collection * Rename collections->system-collections * Rename display-template->system-display-template * Rename field->system-field * Rename interface->system-interface * Rename interface-options->system-interface-options * Rename scope->interface-scope * Rename tfa-setup->system-mfa-setup * Fix oversights * Remove old todo * Some more tweaks * Add migration, fix dropdown name in system use * Merge numeric + input * Replace dropdown->select-dropdown in app use * Merge slug->input, user->select-dropdown-m2o * Fix type issue * Fix seeder field name
This commit is contained in:
76
api/src/database/migrations/20210506A-rename-interfaces.ts
Normal file
76
api/src/database/migrations/20210506A-rename-interfaces.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { Knex } from 'knex';
|
||||
|
||||
// [before, after, after-option additions]
|
||||
const changes: [string, string, Record<string, any>?][] = [
|
||||
['button-links', 'presentation-links'],
|
||||
['checkboxes', 'select-multiple-checkbox'],
|
||||
['code', 'input-code'],
|
||||
['color', 'select-color'],
|
||||
['datetime', 'datetime'],
|
||||
['divider', 'presentation-divider'],
|
||||
['dropdown', 'select-dropdown'],
|
||||
['dropdown-multiselect', 'select-multiple-dropdown'],
|
||||
['file', 'file'],
|
||||
['hash', 'input-hash'],
|
||||
['icon', 'select-icon'],
|
||||
['image', 'file-image'],
|
||||
['m2a-builder', 'list-m2a'],
|
||||
['many-to-many', 'list-m2m'],
|
||||
['many-to-one', 'select-dropdown-m2o'],
|
||||
['markdown', 'input-rich-text-md'],
|
||||
['notice', 'presentation-notice'],
|
||||
['numeric', 'input'],
|
||||
['one-to-many', 'list-o2m'],
|
||||
['radio-buttons', 'select-radio'],
|
||||
['repeater', 'list'],
|
||||
['slider', 'slider'],
|
||||
['slug', 'input', { slug: true }],
|
||||
['tags', 'tags'],
|
||||
['text-input', 'input'],
|
||||
['textarea', 'input-multiline'],
|
||||
['toggle', 'boolean'],
|
||||
['translations', 'translations'],
|
||||
['tree-view', 'list-o2m-tree-view'],
|
||||
['user', 'select-dropdown-m2o', { template: '{{avatar.$thumbnail}} {{first_name}} {{last_name}}' }],
|
||||
['wysiwyg', 'input-rich-text-html'],
|
||||
|
||||
// System:
|
||||
['collection', 'system-collection'],
|
||||
['collections', 'system-collection-multiple'],
|
||||
['display-template', 'system-display-template'],
|
||||
['field', 'system-field'],
|
||||
['interface', 'system-interface'],
|
||||
['interface-options', 'system-interface-options'],
|
||||
['scope', 'system-scope'],
|
||||
['system-language', 'system-language'],
|
||||
['tfa-setup', 'system-mfa-setup'],
|
||||
];
|
||||
|
||||
export async function up(knex: Knex): Promise<void> {
|
||||
for (const [before, after, options] of changes) {
|
||||
// If any options need to be added, update the fields one by one in order to update the pre-existing field options
|
||||
if (options) {
|
||||
const fields = await knex
|
||||
.select<{ id: number; options: Record<string, unknown> }[]>('id', 'options')
|
||||
.from('directus_fields')
|
||||
.where({ interface: before });
|
||||
|
||||
for (const { id, options: existingOptions } of fields) {
|
||||
const newOptions = {
|
||||
...(existingOptions || {}),
|
||||
...options,
|
||||
};
|
||||
|
||||
await knex('directus_fields').update({ interface: after, options: newOptions }).where({ id });
|
||||
}
|
||||
} else {
|
||||
await knex('directus_fields').update({ interface: after }).where({ interface: before });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function down(knex: Knex): Promise<void> {
|
||||
for (const [before, after] of changes) {
|
||||
await knex('directus_fields').update({ interface: before }).where({ interface: after });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user