55 lines
2.4 KiB
JavaScript
55 lines
2.4 KiB
JavaScript
|
exports.up = (knex, Promise) => (async() => {
|
||
|
await knex.schema.createTable('channels', table => {
|
||
|
table.increments('id').primary();
|
||
|
table.string('cid').unique().collate('utf8_general_ci');
|
||
|
table.string('name');
|
||
|
table.text('description');
|
||
|
table.string('cpg_name');
|
||
|
table.text('cpg_description');
|
||
|
table.string('from_email_override');
|
||
|
table.string('from_name_override');
|
||
|
table.string('reply_to_override');
|
||
|
table.string('subject');
|
||
|
table.integer('send_configuration').unsigned().references(`send_configurations.id`);
|
||
|
table.integer('source').unsigned().notNullable();
|
||
|
table.text('data', 'longtext');
|
||
|
table.boolean('click_tracking_disabled').defaultTo(false);
|
||
|
table.boolean('open_tracking_disabled').defaultTo(false);
|
||
|
table.string('unsubscribe_url');
|
||
|
table.timestamp('created').defaultTo(knex.fn.now());
|
||
|
table.integer('namespace').unsigned().references('namespaces.id');
|
||
|
|
||
|
});
|
||
|
|
||
|
await knex.schema.createTable('channel_lists', table => {
|
||
|
table.increments('id').primary();
|
||
|
table.integer('channel').unsigned().notNullable().references('channels.id');
|
||
|
table.integer('list').unsigned().notNullable().references('lists.id');
|
||
|
table.integer('segment').unsigned().references('segments.id');
|
||
|
});
|
||
|
|
||
|
await knex.schema.table('campaigns', table => {
|
||
|
table.integer('channel').unsigned().references('channels.id');
|
||
|
});
|
||
|
|
||
|
const entityType = 'channel';
|
||
|
await knex.schema
|
||
|
.createTable(`shares_${entityType}`, table => {
|
||
|
table.integer('entity').unsigned().notNullable().references(`${entityType}s.id`).onDelete('CASCADE');
|
||
|
table.integer('user').unsigned().notNullable().references('users.id').onDelete('CASCADE');
|
||
|
table.string('role', 128).notNullable();
|
||
|
table.boolean('auto').defaultTo(false);
|
||
|
table.primary(['entity', 'user']);
|
||
|
})
|
||
|
.createTable(`permissions_${entityType}`, table => {
|
||
|
table.integer('entity').unsigned().notNullable().references(`${entityType}s.id`).onDelete('CASCADE');
|
||
|
table.integer('user').unsigned().notNullable().references('users.id').onDelete('CASCADE');
|
||
|
table.string('operation', 128).notNullable();
|
||
|
table.primary(['entity', 'user', 'operation']);
|
||
|
});
|
||
|
|
||
|
})();
|
||
|
|
||
|
exports.down = (knex, Promise) => (async() => {
|
||
|
})();
|