mailtrain/setup/knex/migrations/20170507084114_create_permissions.js

51 lines
2.2 KiB
JavaScript
Raw Normal View History

2017-05-15 20:22:06 +00:00
const config = require('../config');
exports.up = function(knex, Promise) {
return knex.schema.createTable('shares_list', table => {
table.increments('id').primary();
table.integer('entity').unsigned().notNullable().references('lists.id').onDelete('CASCADE');
2017-05-15 20:22:06 +00:00
table.integer('user').unsigned().notNullable().references('users.id').onDelete('CASCADE');
table.integer('role', 64).notNullable();
table.unique(['entity', 'user']);
2017-05-15 20:22:06 +00:00
})
.createTable('shares_namespace', table => {
table.increments('id').primary();
table.integer('entity').unsigned().notNullable().references('namespaces.id').onDelete('CASCADE');
2017-05-15 20:22:06 +00:00
table.integer('user').unsigned().notNullable().references('users.id').onDelete('CASCADE');
table.string('role', 64).notNullable();
table.unique(['entity', 'user']);
2017-05-15 20:22:06 +00:00
})
.createTable('permissions_list', table => {
table.increments('id').primary();
table.integer('entity').unsigned().notNullable().references('lists.id').onDelete('CASCADE');
2017-05-15 20:22:06 +00:00
table.integer('user').unsigned().notNullable().references('users.id').onDelete('CASCADE');
table.string('operation', 64).notNullable();
table.unique(['entity', 'user', 'operation']);
2017-05-15 20:22:06 +00:00
})
.createTable('permissions_namespace', table => {
table.increments('id').primary();
table.integer('entity').unsigned().notNullable().references('namespaces.id').onDelete('CASCADE');
2017-05-15 20:22:06 +00:00
table.integer('user').unsigned().notNullable().references('users.id').onDelete('CASCADE');
table.string('operation', 64).notNullable();
table.unique(['entity', 'user', 'operation']);
2017-05-15 20:22:06 +00:00
})
.then(() => knex('shares_namespace').insert({
id: 1,
entity: 1,
2017-05-15 20:22:06 +00:00
user: 1,
role: 'master'
2017-05-15 20:22:06 +00:00
}))
;
};
exports.down = function(knex, Promise) {
return knex.schema.dropTable('shares_namespace')
.dropTable('shares_list')
.dropTable('permissions_namespace')
.dropTable('permissions_list');
};