Skip to content

krsbx/sequelize-db-type

Repository files navigation

Sequelize DB Type

Sequelize model type definitions generator for Node Js Developer who use Sequelize + TypeScript

Get started with `Sequelize DB Type` by running
npm i -D sequelize-db-type
or with yarn
yarn add -D sequelize-db-type

PRs-Welcome NPM version Downloads

Table of contents

What is Sequelize DB Type?

"Sequelize DB Type" is a model typedefinitions for the people who use TypeScript as their language when developing backend with Sequelize ORM.

Keep in mind that the generated file is can be edited. Just keep in mind the generated file will be overwritten every time you run a sequelize migration.

Getting Started

  1. To get started with sequelize-db-type, run any of the following commands:

npm

npm i -D sequelize-db-type@latest
  1. Add your model/migration/seeder folder path to your package.json in sequelize-db-type
# Rest of your `package.json`
+ "sequelize-db-type": {
+  "models": "your-model-folder-path",
+  "migrations": "your-migration-folder-path",
+  "seeders": "your-seeder-folder-path",
+ }
}
  1. Add a prepare scripts in your package.json
  "scripts":{
+   "prepare": "patch-package",
  }
  1. Run the prepare scripts to patch sequelize-cli so it will run sequelize-db-type automatically
# With NPM
yarn run prepare

# With Yarn
yarn run prepare
  1. Run a sequelize migrations
# With NPM
npx sequelize-cli db:migrate

# With Yarn
yarn sequelize-cli db:migrate
  1. Add sequelize-db-type in your models/index.ts
# Import `sequelize-db-type`
+ import { Database } from 'sequelize-db-type/helper';

# Change db from an object to Database
- let db = {}
+ const db: Database = {} as Database;
  1. Add sequelize-db-type in all of your model in models folder
# Import `sequelize-db-type`
+ import { Database } from 'sequelize-db-type/helper';

# Change `static associate` parameter type
- static associate(models) {
-   define association here
- }
+ static associate(models: Database) {
+   define association here
+ }
  1. Use generated models in your code (e.g. index.ts)
// Import the models from 'models' folder
import db from './models';

db.sequelize.drop(); // Should have a type definition now

// Should have a type definition with the correct paramter to pass through
db.users.create({
  ...payload,
});

Contributors

We 💖 contributors! Feel free to contribute to this project but please read the Contributing Guidelines before opening an issue or PR so you understand the branching strategy and local development environment.