@tanglemedia/directus-collection-embed
Version:
Installs the Embed Collection to your Directus project.
276 lines (269 loc) • 5.37 kB
JavaScript
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();
}