Giter Club home page Giter Club logo

sequelize-typescript-migration's Introduction

GitHub stats

Top Langs

sequelize-typescript-migration's People

Contributors

kimjbstar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

sequelize-typescript-migration's Issues

@Index not working

Hello guys i have a model with an @Index, and after the first SequelizeTypescriptMigration.makeMigration, when i try to change anything from that model i get the error:

TypeError: Cannot set property 'actionType' of undefined
    at /home/projects/Projects/iron-service/node_modules/sequelize-typescript-migration/src/utils/getDiffActionsFromTables.ts:134:10
    at Array.forEach (<anonymous>)
    at Object.getDiffActionsFromTables [as default] (/home/projects/Projects/iron-service/node_modules/sequelize-typescript-migration/src/utils/getDiffActionsFromTables.ts:35:14)
    at Function.SequelizeTypescriptMigration.makeMigration (/home/projects/Projects/iron-service/node_modules/sequelize-typescript-migration/src/index.ts:74:51)
    at bootstrap (/home/projects/Projects/iron-service/config/migrateMake.ts:23:20)

Debugging the lib i found inside getDiffActionsFromTable when is the condition:

if (df.path[1] === "indexes") {
                        const tableName = df.path[0];
                        const copied = df.rhs // IS UNDEFINED
                            ? JSON.parse(JSON.stringify(df.rhs))
                            : undefined;
                        const index = copied;

                        index.actionType = "addIndex";
                        index.tableName = tableName;
                        index.depends = [tableName];
                        actions.push(index);
                        break;
                    }

The df.rhs is undefined so the code will break on line 82: index.actionType = "addIndex";

My Model:

import {
  Table, Column, Model, CreatedAt, AllowNull, DataType, Unique, Index, NotEmpty,
} from 'sequelize-typescript';

@Table
export default class ApiAudit extends Model<ApiAudit> {
  @NotEmpty
  @Column
  vaultAccountId: number;

  @NotEmpty
  @Column
  eventName: string;

  @NotEmpty
  @Unique
  @Index
  @Column
  txHash: string;

  @AllowNull(false)
  @Column(DataType.JSON)
  data: unknown;

  @CreatedAt
  createdAt: Date;
}

When i use the const HashIndex = createIndexDecorator(); to create an index, everything works.

Thanks.

TypeError: Cannot read property 'length' of undefined

Hi , i got this error and i don't have idea what to do , anyone can help me ?

import { Sequelize } from 'sequelize-typescript'
// import { Person } from '../models/test.model';
const path = require('path')

export const sequelize : Sequelize = new Sequelize({
  database: 'test',
  dialect: 'mysql',
  username: 'root',
  password: '',
  storage: ':memory:',
  models: [] // or [Player, Team],
})

listen():boolean {
    return this.app.listen(process.env.PORT || 8080, async (err: any, callback: any):Promise<Boolean> => {
      console.log('Servidor conectado en puerto', process.env.PORT)
      await sequelize.addModels([Person])
      // let f: Date = new Date();
      // let birtDate = f.getDate() + "-"+ f.getMonth()+ "-" +f.getFullYear();
      // Person.create({name:'Camilo',date: birtDate})
      if(err){
        return false
      }
      return true;
    })
  }
sequelize(): void{
    (async () => {
      try {
        await SequelizeTypescriptMigration.makeMigration(sequelize, {
          outDir: path.join(__dirname, "../migrations"),
          migrationName: "qrleanMigration",
          preview: false,
        });
      }catch (e) {
        console.log(e)
      }
    })();
  }

this error appeared from nowhere.

TypeError: Cannot read property 'length' of undefined
at C:\Users\F\Desktop\QrleanProyecto\Backend\node_modules\sequelize-typescript-migration\dist\utils\getDiffActionsFromTables.js:15:33
at Array.forEach ()
at Object.getDiffActionsFromTables [as default] (C:\Users\F\Desktop\QrleanProyecto\Backend\node_modules\sequelize-typescript-migration\dist\utils\getDiffActionsFromTables.js:11:16)
at Function.SequelizeTypescriptMigration.makeMigration (C:\Users\F\Desktop\QrleanProyecto\Backend\node_modules\sequelize-typescript-migration\dist\index.js:35:57)
at processTicksAndRejections (internal/process/task_queues.js:97:5)

Doesn't detect changes for the AllowNull attribute

I do have a model where I'm changing the @AllowNull attribute from false to true. After I call generateMigration, I do see a new migration file is created, but inside is empty.

I did check the database and the respective columns are allowing null, so they shall be detected as changed.

Please check.

[SequelizeDatabaseError]: relation "sequelizemeta" does not exist

Hello!
First of all thanks for taking your time into trying to solve a big pain for many developers in this manner ;)

I wanted to ask on how to implement it with sequelize v5 and typescript set to esm2017.

I had to modify the code of makemigration.ts into this:

import { SequelizeTypescriptMigration } from 'sequelize-typescript-migration';
import * as path from 'path';

require('dotenv').config();

const sequelize: Sequelize = new Sequelize({
  dialect: 'postgres',
  port: Number(process.env.DB_PORT),
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  host: process.env.DB_HOST,
  modelMatch: (filename, member) => {
    return filename.substring(0, filename.indexOf('.model.ts')) === member.toLowerCase();
  }

});


// @ts-ignore
async function migrate() {
  try {
    await SequelizeTypescriptMigration.makeMigration(sequelize, {
      outDir: path.join(__dirname, './migrations'),
      migrationName: 'migration',
      preview: true
    });
  } catch (e) {
    console.log(e);
    return e;
  }
}

migrate().then(r => {
  return r;
});

Currently I'm getting this error:

Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMetaMigrations" ("revision" INTEGER NOT NULL UNIQUE , "name" VARCHAR(255) NOT NULL, "state" JSON NOT NULL, PRIMARY KEY ("revision"));
Executing (default): SELECT name FROM SequelizeMeta ORDER BY name desc limit 1
DatabaseError [SequelizeDatabaseError]: relation "sequelizemeta" does not exist
    at Query.formatError (E:\Projects\100bet\node_modules\sequelize\lib\dialects\postgres\query.js:366:16)
    at E:\Projects\100bet\node_modules\sequelize\lib\dialects\postgres\query.js:72:18
    at tryCatcher (E:\Projects\100bet\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (E:\Projects\100bet\node_modules\bluebird\js\release\promise.js:547:31)
    at Promise._settlePromise (E:\Projects\100bet\node_modules\bluebird\js\release\promise.js:604:18)
    at Promise._settlePromise0 (E:\Projects\100bet\node_modules\bluebird\js\release\promise.js:649:10)
    at Promise._settlePromises (E:\Projects\100bet\node_modules\bluebird\js\release\promise.js:725:18)
    at _drainQueueStep (E:\Projects\100bet\node_modules\bluebird\js\release\async.js:93:12)
    at _drainQueue (E:\Projects\100bet\node_modules\bluebird\js\release\async.js:86:9)
    at Async._drainQueues (E:\Projects\100bet\node_modules\bluebird\js\release\async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (E:\Projects\100bet\node_modules\bluebird\js\release\async.js:15:14)
    at processImmediate (internal/timers.js:458:21) {
  parent: error: relation "sequelizemeta" does not exist
      at Parser.parseErrorMessage (E:\Projects\100bet\node_modules\pg-protocol\src\parser.ts:357:11)
      at Parser.handlePacket (E:\Projects\100bet\node_modules\pg-protocol\src\parser.ts:186:21)
      at Parser.parse (E:\Projects\100bet\node_modules\pg-protocol\src\parser.ts:101:30)
      at Socket.<anonymous> (E:\Projects\100bet\node_modules\pg-protocol\src\index.ts:7:48)
      at Socket.emit (events.js:314:20)
      at Socket.EventEmitter.emit (domain.js:486:12)
      at addChunk (_stream_readable.js:303:12)
      at readableAddChunk (_stream_readable.js:279:9)
      at Socket.Readable.push (_stream_readable.js:218:10)
      at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
    length: 112,
    severity: 'ERROR',
    code: '42P01',
    detail: undefined,
    hint: undefined,
    position: '18',
    internalPosition: undefined,
    internalQuery: undefined,
    where: undefined,
    schema: undefined,
    table: undefined,
    column: undefined,
    dataType: undefined,
    constraint: undefined,
    file: 'parse_relation.c',
    line: '1191',
    routine: 'parserOpenTable',
    sql: 'SELECT name FROM SequelizeMeta ORDER BY name desc limit 1',
    parameters: undefined
  },
  original: error: relation "sequelizemeta" does not exist
      at Parser.parseErrorMessage (E:\Projects\100bet\node_modules\pg-protocol\src\parser.ts:357:11)
      at Parser.handlePacket (E:\Projects\100bet\node_modules\pg-protocol\src\parser.ts:186:21)
      at Parser.parse (E:\Projects\100bet\node_modules\pg-protocol\src\parser.ts:101:30)
      at Socket.<anonymous> (E:\Projects\100bet\node_modules\pg-protocol\src\index.ts:7:48)
      at Socket.emit (events.js:314:20)
      at Socket.EventEmitter.emit (domain.js:486:12)
      at addChunk (_stream_readable.js:303:12)
      at readableAddChunk (_stream_readable.js:279:9)
      at Socket.Readable.push (_stream_readable.js:218:10)
      at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
    length: 112,
    severity: 'ERROR',
    code: '42P01',
    detail: undefined,
    hint: undefined,
    position: '18',
    internalPosition: undefined,
    internalQuery: undefined,
    where: undefined,
    schema: undefined,
    table: undefined,
    column: undefined,
    dataType: undefined,
    constraint: undefined,
    file: 'parse_relation.c',
    line: '1191',
    routine: 'parserOpenTable',
    sql: 'SELECT name FROM SequelizeMeta ORDER BY name desc limit 1',
    parameters: undefined
  },
  sql: 'SELECT name FROM SequelizeMeta ORDER BY name desc limit 1',
  parameters: undefined
}

Do you think that this error is related to the code I made or maybe library compatibility?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.