exports.up = async function (knex) { // Add ownerId column to contacts await knex.schema.alterTable('contacts', (table) => { table.uuid('ownerId'); table .foreign('ownerId') .references('id') .inTable('users') .onDelete('SET NULL'); table.index(['ownerId']); }); // Add ownerId field definition metadata for Contact object const contactObject = await knex('object_definitions') .where('apiName', 'Contact') .first(); if (contactObject) { const existingField = await knex('field_definitions') .where({ objectDefinitionId: contactObject.id, apiName: 'ownerId', }) .first(); if (!existingField) { await knex('field_definitions').insert({ id: knex.raw('(UUID())'), objectDefinitionId: contactObject.id, apiName: 'ownerId', label: 'Owner', type: 'Reference', referenceObject: 'User', isSystem: true, isCustom: false, displayOrder: 4, created_at: knex.fn.now(), updated_at: knex.fn.now(), }); } } }; exports.down = async function (knex) { const contactObject = await knex('object_definitions') .where('apiName', 'Contact') .first(); if (contactObject) { await knex('field_definitions') .where({ objectDefinitionId: contactObject.id, apiName: 'ownerId', }) .delete(); } await knex.schema.alterTable('contacts', (table) => { table.dropForeign(['ownerId']); table.dropColumn('ownerId'); }); };