UNPKG

@tanglemedia/directus-collection-embed

Version:

Installs the Embed Collection to your Directus project.

276 lines (269 loc) 6 kB
const COLLECTION_NAME = "tngl_embed"; const COLLECTION_INSERTS = [ { collection: COLLECTION_NAME, icon: "media_link", note: null, display_template: "{{title}} {{type}}", hidden: true, singleton: false, translations: JSON.stringify([ { language: "en-US", translation: "Embed", }, { language: "en-CA", translation: "Embed", }, ]), archive_field: null, archive_app_filter: true, archive_value: null, unarchive_value: null, sort_field: null, accountability: "all", color: null, item_duplication_fields: null, sort: null, group: null, collapse: "open", preview_url: null, versioning: false, }, ]; const FIELD_INSERTS = [ { collection: COLLECTION_NAME, field: "id", special: null, interface: "input", options: null, display: null, display_options: null, readonly: true, hidden: true, sort: 1, width: "full", translations: null, note: null, conditions: null, required: false, group: null, validation: null, validation_message: null, }, { collection: COLLECTION_NAME, field: "sort", special: null, interface: "input", options: null, display: null, display_options: null, readonly: false, hidden: true, sort: 2, width: "full", translations: null, note: null, conditions: null, required: false, group: null, validation: null, validation_message: null, }, { collection: COLLECTION_NAME, field: "title", special: null, interface: "input", options: null, display: null, display_options: null, readonly: false, hidden: false, sort: 3, width: "full", translations: null, note: null, conditions: null, required: false, group: null, validation: null, validation_message: null, }, { collection: COLLECTION_NAME, field: "type", special: null, interface: "select-dropdown", options: JSON.stringify({ choices: [ { text: "Youtube", value: "youtube", }, { text: "Custom Code", value: "custom", }, ], }), display: "labels", display_options: JSON.stringify({ choices: [ { text: "Youtube", value: "youtube", }, { text: "Custom Code", value: "custom", }, ], }), readonly: false, hidden: false, sort: 4, width: "full", translations: null, note: null, conditions: null, required: false, group: null, validation: null, validation_message: null, }, { collection: COLLECTION_NAME, field: "youtube", special: "alias,no-data,group", interface: "group-raw", options: null, display: null, display_options: null, readonly: false, hidden: false, sort: 5, width: "full", translations: null, note: null, conditions: JSON.stringify([ { name: "visibility", rule: { _and: [ { type: { _neq: "youtube", }, }, ], }, hidden: true, options: {}, }, ]), required: false, group: null, validation: null, validation_message: null, }, { collection: COLLECTION_NAME, field: "youtube_id", special: null, interface: "input", options: null, display: null, display_options: null, readonly: false, hidden: false, sort: 6, width: "full", translations: null, note: null, conditions: null, required: false, group: "youtube", validation: null, validation_message: null, }, { collection: COLLECTION_NAME, field: "custom", special: "alias,no-data,group", interface: "group-raw", options: null, display: null, display_options: null, readonly: false, hidden: false, sort: 7, width: "full", translations: null, note: null, conditions: JSON.stringify([ { name: "visibility", rule: { _and: [ { type: { _neq: "custom", }, }, ], }, hidden: true, options: {}, }, ]), required: false, group: null, validation: null, validation_message: null, }, { collection: COLLECTION_NAME, field: "embed_code", special: null, interface: "input-multiline", options: null, display: null, display_options: null, readonly: false, hidden: false, sort: 8, width: "full", translations: null, note: null, conditions: null, required: false, group: "custom", validation: null, validation_message: null, }, ]; export async function up(knex) { // if row exists in directus_collections table, do not proceed with migration const collectionExists = await knex("directus_collections") .select("collection") .where("collection", COLLECTION_NAME) .first(); // register table into `directus_collections` table // for full list of directus_collections properties, refer to: https://docs.directus.io/reference/system/collections.html if (!collectionExists) { await knex("directus_collections").insert(COLLECTION_INSERTS); } // register fields into `directus_fields` table // for full list of directus_fields properties, refer to: https://docs.directus.io/reference/system/fields.html await knex("directus_fields").insert(FIELD_INSERTS); } export async function down(knex) { // remove associated data from directus_fields table await knex("directus_fields").where("collection", COLLECTION_NAME).del(); // remove associated data from directus_collections table await knex("directus_collections").where("collection", COLLECTION_NAME).del(); }