sequelize-typescript-migration icon indicating copy to clipboard operation
sequelize-typescript-migration copied to clipboard

Wrap table name in quotes for dialect: postgres

Open anders0l opened this issue 5 years ago • 1 comments

There is known issue with postresql. When table name is not wrapped in double quotes - postgres tries to find name in lower case. 'SELECT name FROM SequelizeMeta ORDER BY name desc limit 1' shows an error: relation "sequelizemeta" does not exist. But SequelizeMeta table exists.

anders0l avatar Aug 31 '20 13:08 anders0l

Hot ugly fix that creates extra tables with lowercase: createMigrationTable.ts

import { Sequelize, DataType } from 'sequelize-typescript'

export default async (sequelize: Sequelize) => {
	const queryInterface = sequelize.getQueryInterface()
	await queryInterface.createTable('sequelizemeta', {
		name: {
			type: DataType.STRING,
			allowNull: false,
			unique: true,
			primaryKey: true,
		},
	})
	await queryInterface.createTable('sequelizemetamigrations', {
		revision: {
			type: DataType.INTEGER,
			allowNull: false,
			unique: true,
			primaryKey: true,
		},
		name: {
			type: DataType.STRING,
			allowNull: false,
		},
		state: {
			type: DataType.JSON,
			allowNull: false,
		},
	})
}

Then in migration file add

await createMigrationTable(sequelize)

before

await SequelizeTypescriptMigration.makeMigration(sequelize, {

anders0l avatar Aug 31 '20 13:08 anders0l