@picadeck/sequelize-parser
Parse a Sequelize instance or model array into a UniversalSchema for visualization.
Installation
npm install @picadeck/sequelize-parserImport
import {
parseSequelizeInstance,
parseSequelizeModels,
} from "@picadeck/sequelize-parser";API
parseSequelizeInstance(sequelize: Sequelize): UniversalSchema
Accepts an initialized Sequelize instance. Reads all defined models, their attributes, associations, and constraints.
parseSequelizeModels(models: Model[], database?: string): UniversalSchema
Accepts an array of Sequelize model classes directly. The optional database parameter sets the database name in the output metadata.
Full Example
server.ts
import express from "express";
import { Sequelize, DataTypes } from "sequelize";
import { schemaVisualizer } from "@picadeck/core";
import { parseSequelizeInstance } from "@picadeck/sequelize-parser";
const sequelize = new Sequelize("postgres://localhost:5432/shop");
const Product = sequelize.define("Product", {
name: { type: DataTypes.STRING, allowNull: false },
price: { type: DataTypes.DECIMAL(10, 2), allowNull: false },
description: DataTypes.TEXT,
inStock: { type: DataTypes.BOOLEAN, defaultValue: true },
});
const Category = sequelize.define("Category", {
name: { type: DataTypes.STRING, allowNull: false, unique: true },
});
Category.hasMany(Product);
Product.belongsTo(Category);
await sequelize.sync();
const app = express();
const schema = parseSequelizeInstance(sequelize);
app.use("/schema", schemaVisualizer(schema));
app.listen(3000);Supported Types
| Sequelize Type | NormalizedType |
|---|---|
| STRING | STRING |
| INTEGER | INTEGER |
| FLOAT / DOUBLE | FLOAT |
| DECIMAL | DECIMAL |
| BOOLEAN | BOOLEAN |
| DATE / DATEONLY | DATETIME / DATE |
| UUID / UUIDV4 | UUID |
| JSON / JSONB | JSON |
| TEXT | TEXT |
| ENUM | ENUM |
Notes
- Works with
@nestjs/sequelize. Inject the Sequelize instance from the DI container. - Associations (hasMany, belongsTo, belongsToMany) are mapped to relationships with correct cardinality.
- Virtual fields are excluded from the output by default.