Node.js - Sequelize support

Introduction

Sequelize is a promise-based Node.js ORM tool for Postgres, MySQL, SQLite, Microsoft SQL Server, Oracle Database - see https://sequelize.org/docs/ for more information.

Objects

This extension creates the entity, entity operation and query objects:

  • a Node.js entity object when the APIs ‘define’ or ‘init’ of a Sequelize.Model instance is found.
  • a Node.js entity operation object when one of the supported Sequelize APIs is used and linked to one of the entities.
  • a TypeScript SQL query object when the API ‘query’ is found.
Icon Description
Node.js entity
Node.js entity operation
TypeScript SQL query

Supported persistence SQL databases

Supported operations

Entity Operation Supported APIs
Add
  • Model.create
  • Model.bulkCreate
Update
  • Model.update
  • Model.restore
  • Model.increment
  • Model.decrement
Remove
  • Model.destroy
Select
  • Model.findAll
  • Model.findByPk
  • Model.findOne
  • Model.findOrCreate
  • Model.findAndCountAll
  • Model.count
  • Model.max
  • Model.min
  • Model.sum

‘Model’ above can be defined by ‘Sequelize.define’ or using a class extending ‘Sequelize.Model’.

Link Type Caller type Callee type Comment
callLink
  • TypeScript function
  • TypeScript method
  • TypeScript module
  • Node.js entity operation
  • TypeScript SQL query
relyonLink
  • Node.js entity
  • TypeScript class
When the entity is defined using a class extending ‘Sequelize.Model’.
useInsertLink
  • Node.js entity operation: Add
  • TypeScript SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed.
useUpdateLink
  • Node.js entity operation: Update
  • TypeScript SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed.
useDeleteLink
  • Node.js entity operation: Remove
  • TypeScript SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed.
useSelectLink
  • Node.js entity operation: Select
  • TypeScript SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed .

Example

Take the following codes:

import Sequelize from 'sequelize';
const sequelize = new Sequelize('sqlite::memory:');

class User extends Sequelize.Model { }
User.init(
  {
    // ... (attributes)
  },
  {
    sequelize,
    modelName: 'user',
  }
);

await User.findAll().then(t_user=> { });

const Post = sequelize.define(
  'post',
  {
    // ... (attributes)
  },
  {
    freezeTableName: true,
  },
);

await Post.update(
  { lastName: 'Doe' },
);

function userSearch (req) {
    var query = "SELECT name,id FROM Users WHERE login='" + req.body.login + "'";
    db.sequelize.query(query, {
        model: db.User
    })
      .then(user => {
    })
};

In this example, two ‘Node.js Entity’ objects, two ‘Node.js Entity Operation’ objects, and a ‘SQL Query’ object are created. A ‘relyOn’ link is added when entity ‘user’ is defined using a class extending ‘Sequelize.Model’. The SQL Analyzer links these entity operations and this query with the corresponding tables. In the present case, this extension creates two ‘useSelect’ and a ‘useUpdate’ links to the missing tables ‘Users’ and ‘post’: