123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 'use strict';
- const sinon = require('sinon');
- const { beforeAll2, expectsql, sequelize } = require('../../support');
- const { DataTypes } = require('@sequelize/core');
- describe('QueryInterface#changeColumn', () => {
- if (sequelize.dialect.name === 'sqlite3') {
- return;
- }
- const vars = beforeAll2(() => {
- const User = sequelize.define(
- 'users',
- {
- id: {
- type: DataTypes.INTEGER,
- primaryKey: true,
- autoIncrement: true,
- },
- level_id: {
- type: DataTypes.INTEGER,
- },
- },
- { timestamps: false },
- );
- const stub = sinon.stub(sequelize, 'queryRaw').resolvesArg(0);
- return { User, stub };
- });
- beforeEach(() => {
- vars.stub.resetHistory();
- });
- after(() => {
- vars.stub.restore();
- });
- it('properly generate alter queries', async () => {
- const { User } = vars;
- const sql = await sequelize.queryInterface.changeColumn(User.table, 'level_id', {
- type: DataTypes.FLOAT,
- allowNull: false,
- });
- expectsql(sql, {
- ibmi: 'ALTER TABLE "users" ALTER COLUMN "level_id" SET DATA TYPE REAL NOT NULL',
- mssql: 'ALTER TABLE [users] ALTER COLUMN [level_id] REAL NOT NULL;',
- db2: 'ALTER TABLE "users" ALTER COLUMN "level_id" SET DATA TYPE REAL ALTER COLUMN "level_id" SET NOT NULL;',
- mariadb: 'ALTER TABLE `users` CHANGE `level_id` `level_id` FLOAT NOT NULL;',
- mysql: 'ALTER TABLE `users` CHANGE `level_id` `level_id` FLOAT NOT NULL;',
- postgres:
- 'ALTER TABLE "users" ALTER COLUMN "level_id" SET NOT NULL;ALTER TABLE "users" ALTER COLUMN "level_id" DROP DEFAULT;ALTER TABLE "users" ALTER COLUMN "level_id" TYPE REAL;',
- snowflake:
- 'ALTER TABLE "users" ALTER COLUMN "level_id" SET NOT NULL;ALTER TABLE "users" ALTER COLUMN "level_id" DROP DEFAULT;ALTER TABLE "users" ALTER COLUMN "level_id" TYPE FLOAT;',
- });
- });
- it('properly generate alter queries for foreign keys', async () => {
- const { User } = vars;
- const sql = await sequelize.queryInterface.changeColumn(User.table, 'level_id', {
- type: DataTypes.INTEGER,
- references: {
- table: 'level',
- key: 'id',
- },
- onUpdate: 'cascade',
- onDelete: 'cascade',
- });
- expectsql(sql, {
- ibmi: 'ALTER TABLE "users" ADD CONSTRAINT "level_id" FOREIGN KEY ("level_id") REFERENCES "level" ("id") ON DELETE CASCADE',
- mssql:
- 'ALTER TABLE [users] ADD FOREIGN KEY ([level_id]) REFERENCES [level] ([id]) ON DELETE CASCADE;',
- db2: 'ALTER TABLE "users" ADD CONSTRAINT "level_id_foreign_idx" FOREIGN KEY ("level_id") REFERENCES "level" ("id") ON DELETE CASCADE;',
- mariadb:
- 'ALTER TABLE `users` ADD FOREIGN KEY (`level_id`) REFERENCES `level` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;',
- mysql:
- 'ALTER TABLE `users` ADD FOREIGN KEY (`level_id`) REFERENCES `level` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;',
- postgres:
- 'ALTER TABLE "users" ADD FOREIGN KEY ("level_id") REFERENCES "level" ("id") ON DELETE CASCADE ON UPDATE CASCADE;',
- snowflake:
- 'ALTER TABLE "users" ADD FOREIGN KEY ("level_id") REFERENCES "level" ("id") ON DELETE CASCADE ON UPDATE CASCADE;',
- });
- });
- });
|