ramirez/db/migrations/20171223203915_create_table...

65 lines
2.4 KiB
JavaScript

exports.up = async function(knex, Promise) {
if (! await knex.schema.hasTable("threads")) {
await knex.schema.createTable("threads", table => {
table.string("id", 36).notNullable().primary();
table.integer("status").unsigned().notNullable().index();
table.integer("is_legacy").unsigned().notNullable();
table.string("user_id", 20).notNullable().index();
table.string("user_name", 128).notNullable();
table.string("channel_id", 20).nullable().unique();
table.dateTime("created_at").notNullable().index();
});
}
if (! await knex.schema.hasTable("thread_messages")) {
await knex.schema.createTable("thread_messages", table => {
table.increments("id");
table.string("thread_id", 36).notNullable().index().references("id").inTable("threads").onDelete("CASCADE");
table.integer("message_type").unsigned().notNullable();
table.string("user_id", 20).nullable();
table.string("user_name", 128).notNullable();
table.mediumtext("body").notNullable();
table.integer("is_anonymous").unsigned().notNullable();
table.string("dm_message_id", 20).nullable().unique();
table.dateTime("created_at").notNullable().index();
});
}
if (! await knex.schema.hasTable("blocked_users")) {
await knex.schema.createTable("blocked_users", table => {
table.string("user_id", 20).primary().notNullable();
table.string("user_name", 128).notNullable();
table.string("blocked_by", 20).nullable();
table.dateTime("blocked_at").notNullable();
});
}
if (! await knex.schema.hasTable("snippets")) {
await knex.schema.createTable("snippets", table => {
table.string("trigger", 32).primary().notNullable();
table.text("body").notNullable();
table.integer("is_anonymous").unsigned().notNullable();
table.string("created_by", 20).nullable();
table.dateTime("created_at").notNullable();
});
}
};
exports.down = async function(knex, Promise) {
if (await knex.schema.hasTable("thread_messages")) {
await knex.schema.dropTable("thread_messages");
}
if (await knex.schema.hasTable("threads")) {
await knex.schema.dropTable("threads");
}
if (await knex.schema.hasTable("blocked_users")) {
await knex.schema.dropTable("blocked_users");
}
if (await knex.schema.hasTable("snippets")) {
await knex.schema.dropTable("snippets");
}
};