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
"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.
- To get started with
sequelize-db-type
, run any of the following commands:
npm i -D sequelize-db-type@latest
- Add your model/migration/seeder folder path to your
package.json
insequelize-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",
+ }
}
- Add a
prepare
scripts in yourpackage.json
"scripts":{
+ "prepare": "patch-package",
}
- Run the prepare scripts to patch
sequelize-cli
so it will runsequelize-db-type
automatically
# With NPM
yarn run prepare
# With Yarn
yarn run prepare
- Run a sequelize migrations
# With NPM
npx sequelize-cli db:migrate
# With Yarn
yarn sequelize-cli db:migrate
- Add
sequelize-db-type
in yourmodels/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;
- Add
sequelize-db-type
in all of your model inmodels
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
+ }
- 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,
});
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.