- Fix for #890
- "Channels" feature - Shoutout config param rendered on the homepage - "Clone" feature for campaigns
This commit is contained in:
parent
82251d1cb9
commit
00432e6cfe
23 changed files with 1691 additions and 494 deletions
54
server/setup/knex/migrations/20200617172500_add_channels.js
Normal file
54
server/setup/knex/migrations/20200617172500_add_channels.js
Normal file
|
@ -0,0 +1,54 @@
|
|||
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() => {
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue