PicaDeckSync

Databases, by design.

@picadeck/typeorm-parser

Parse a TypeORM DataSource into a UniversalSchema for visualization.

Installation

npm install @picadeck/typeorm-parser

Import

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 TypeNormalizedType
varcharSTRING
intINTEGER
float / double / decimalFLOAT / DECIMAL
booleanBOOLEAN
timestamp / datetimeDATETIME
dateDATE
uuidUUID
json / jsonbJSON
textTEXT
enumENUM

Notes

  • Works with @nestjs/typeorm out 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.