0.0.14 • Published 5 months ago

sequlize-migration v0.0.14

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

sequlize-migration

npm

Seqaumig : Automate Sequelize migrations with TypeScript and JavaScript, supporting dynamic schemas.

Installation

You can install sequlize-migration through npm, as such:

npm install sequlize-migration --save

Set options

new Seqaumig().setOptions({
	sequelize: sequelize,
	dialect: 'postgres',
	migrationsPath: path.resolve('src/db/migrations'),
	seedersPath: path.resolve('src/db/seeders'),
	publicSchema: 'public',
	schema: {
		migrationsPath: path.resolve('src/db/PrivateSchema/migrations'),
		seedersPath: path.resolve('src/db/PrivateSchema/seeders'),
	}
});

How to create schema

await SeqaumigSchema.createSchema(tenant.db_schema, true);
await SeqaumigSchema.deleteSchema(tenant.db_schema, true)

How to run migrations

await SeqaumigMigration.createMigrationTable(tenant.db_schema, true);
await SeqaumigMigration.migrate(tenant.db_schema);
await SeqaumigMigration.migrateUndoLatest(tenant.db_schema);
await SeqaumigMigration.migrateUndo(tenant.db_schema);

How to run seeders

await SeqaumigSeeders.createSeederTable(tenant.db_schema, true);
await SeqaumigSeeders.seed(tenant.db_schema);
await SeqaumigSeeders.seedUndo(tenant.db_schema);

Migration file

'use strict';

const {DataTypes} = require("sequelize");
/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up(queryInterface, Sequelize) {
    await queryInterface.createTable(queryInterface.dynamicSchema('tbl_user_order'),
      {
        id: {
          allowNull: false,
          autoIncrement: true,
          primaryKey: true,
          type: DataTypes.BIGINT,
          validate: {
            min: 0
          },
        },
        user_id: {
          type: DataTypes.BIGINT,
          allowNull: false,
          references: {
            schema: 'static',
            model: queryInterface.publicSchema('tbl_user'),
            key: 'id'
          },
          onUpdate: 'CASCADE',
          onDelete: 'CASCADE'
        },
        order_id: {
          type: DataTypes.BIGINT,
          allowNull: false,
          references: {
            schema: 'static',
            model: queryInterface.dynamicSchema('tbl_order'),
            key: 'id'
          },
          onUpdate: 'CASCADE',
          onDelete: 'CASCADE'
        },
        created_at: {
          type: DataTypes.DATE,
          allowNull: false,
          defaultValue: DataTypes.NOW,
        },
      });
  },

  async down(queryInterface, Sequelize) {
    await queryInterface.dropTable(queryInterface.dynamicSchema('tbl_user_order'));
  }
};

Seeder file

'use strict';

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up(queryInterface, Sequelize) {
    await queryInterface.bulkInsert(queryInterface.dynamicSchema('tbl_user'),
      [
        {
          "id": 1,
          "name": "Alex",
          "created_at": new Date(),
          "updated_at": new Date(),
        }
      ]);
  },

  async down(queryInterface, Sequelize) {
    await queryInterface.bulkDelete(queryInterface.dynamicSchema('tbl_user'));
  }
};
0.0.14

5 months ago

0.0.13

5 months ago

0.0.12

5 months ago

0.0.11

5 months ago

0.0.10

5 months ago

0.0.9

5 months ago

0.0.8

5 months ago

0.0.7

5 months ago

0.0.6

5 months ago

0.0.5

5 months ago

0.0.4

5 months ago

0.0.3

5 months ago

0.0.2

5 months ago

0.0.1

5 months ago