knex.js を postgresql で利用する際の migration について、こうやるといいんじゃないかな的な話題をまとめていきます。(随時更新予定)
bigint な primary key
64bit にしたい場合。
exports.up = function(knex) {
return knex.schema
.createTable('xxxx', function (table) {
table.specificType('id', knex.raw('BIGSERIAL PRIMARY KEY'));
});
};
enum の up / down
up / down の行き来によって enum 型定義だけ残るので強制的に消しに行ってます。
const dropTypeStmt = 'drop type if exists xxx_type';
exports.up = function(knex) {
return knex.schema
.raw(dropTypeStmt)
.createTable('xxx', function (table) {
table.enu('state', ['a', 'b'], { useNative: true, enumName: 'xxx_type' });
});
};
exports.down = function(knex) {
return knex.schema
.raw(dropTypeStmt);
};