🔄 MySQL Sequelize Model Generator

✨ Automatically generate production-ready Sequelize TypeScript models from your MySQL database ✨
🚀 Quick Installation
# Using npm
npm install mysql-sequelize-model-generator --save-dev
# Or using yarn
yarn add mysql-sequelize-model-generator -D
A Node.js utility to automatically generate Sequelize (with sequelize-typescript
) models from an existing MySQL database schema. It introspects your database tables, columns, and relationships to create TypeScript model files and an initialization script, significantly speeding up the setup process for your Sequelize projects.
✨ Key Features
🔍 Database Introspection
- MySQL Schema Scanning - Automatically reads your database structure including tables, columns, and constraints
- Comprehensive Analysis - Examines table relationships, indexes, and column attributes
� Model Generation
- TypeScript Model Files - Generates clean
.model.ts
files for each database table
- Decorator Support - Uses
sequelize-typescript
decorators:
@Table
for model definitions
@Column
for field mappings
@PrimaryKey
for identifiers
@AutoIncrement
for sequential IDs
🤝 Smart Relationship Detection
- Automatic Association Mapping:
@BelongsTo
for foreign key relationships
@HasMany
for one-to-many
@HasOne
for one-to-one
@BelongsToMany
for many-to-many via join tables
- Bidirectional Linking - Creates proper associations in both related models
🗂 Type Conversion
- MySQL → TypeScript Type Mapping:
INT
→ number
VARCHAR
→ string
BOOLEAN
→ boolean
DATE
→ Date
- Custom type overrides available
- Nullability Handling - Properly marks optional fields
🧹 Naming Convention Conversion
Database | Generated Code |
---|
user_accounts | UserAccount (model) |
created_at | createdAt (property) |
fk_order_user | @BelongsTo(() => User) |
⚙️ Initialization Utilities
- Ready-to-use
init-models.ts
- Handles:
- Sequelize instance configuration
- Model registration
- Association setup
- Type-safe model references
- Production-ready - Includes proper error handling and logging setup
🛠 Prerequisites
Before using this generator, ensure you have:
Core Requirements
- Node.js
v12.x or higher (LTS version recommended)
- Package Manager (either):
- npm
v6+
- yarn
v1.22+
Database Requirements
- MySQL
Server v5.7+ (v8.0+ recommended)
- Database connection credentials with read access
Project Dependencies
Ensure your project has these installed:
# Core dependencies
npm install sequelize sequelize-typescript reflect-metadata mysql2
# TypeScript (if using)
npm install typescript @types/node --save-dev
🚀 Usage
1. Configuration Setup
Create a .env
file in your project root:
# Database Connection
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_secure_password
DB_NAME=your_database_name
DB_PORT=3306 # Optional (default: 3306)
Create a generator script generate-models.ts
import dotenv from 'dotenv';
import path from 'path';
import MysqlSequelizeModelGenerator from 'mysql-sequelize-model-generator';
dotenv.config({ path: path.resolve(__dirname, '../.env/.env') });
const generator = new MysqlSequelizeModelGenerator({
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT || '3306'),
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME
});
(async () => {
try {
await generator.generateAll('./src/models');
console.log('✅ Models generated successfully!');
} catch (error) {
console.error('❌ Model generation failed:', error);
}
})();
Run the generator
npx ts-node generate-models.ts
Support
For issues and feature requests, please open an issue.
Need Help?