@picadeck/typeorm-parser
Parse a TypeORM DataSource into a UniversalSchema for visualization.
Installation
npm install @picadeck/typeorm-parserImport
import { parseTypeormDataSource } from "@picadeck/typeorm-parser";API
parseTypeormDataSource(dataSource: DataSource): UniversalSchema
Accepts an initialized TypeORM DataSource. Reads all registered entity metadata including columns, types, primary keys, unique constraints, and relation metadata (OneToOne, OneToMany, ManyToOne, ManyToMany).
Full Example
server.ts
import express from "express";
import { DataSource } from "typeorm";
import { schemaVisualizer } from "@picadeck/core";
import { parseTypeormDataSource } from "@picadeck/typeorm-parser";
import { User } from "./entities/User";
import { Post } from "./entities/Post";
import { Comment } from "./entities/Comment";
const dataSource = new DataSource({
type: "postgres",
host: "localhost",
port: 5432,
database: "blog",
entities: [User, Post, Comment],
synchronize: true,
});
await dataSource.initialize();
const app = express();
const schema = parseTypeormDataSource(dataSource);
app.use("/schema", schemaVisualizer(schema));
app.listen(3000, () => {
console.log("Schema visualizer at http://localhost:3000/schema");
});Supported Types
| TypeORM Column Type | NormalizedType |
|---|---|
| varchar | STRING |
| int | INTEGER |
| float / double / decimal | FLOAT / DECIMAL |
| boolean | BOOLEAN |
| timestamp / datetime | DATETIME |
| date | DATE |
| uuid | UUID |
| json / jsonb | JSON |
| text | TEXT |
| enum | ENUM |
Notes
- Works with
@nestjs/typeormout of the box. Inject the DataSource with@InjectDataSource()and pass it directly. - The DataSource must be initialized before parsing. Call
dataSource.initialize()first. - All relation types (OneToOne, OneToMany, ManyToOne, ManyToMany) are detected and mapped to relationships.