erd.sketch

SQL → TypeORM: модели из DDL-скрипта

Ниже — не картинка и не пересказ: это настоящий вывод генератора для схемы слева. Тот же код вы получите в редакторе кнопкой «Codegen → TypeORM».

Что на входеschema.sql
CREATE TABLE users (
    id BIGINT NOT NULL PRIMARY KEY,
    email       VARCHAR(255) NOT NULL UNIQUE,
    full_name   VARCHAR(120),
    is_active   BOOLEAN NOT NULL,
    created_at  TIMESTAMP NOT NULL
);

CREATE TABLE orders (
    id BIGINT NOT NULL PRIMARY KEY,
    user_id     BIGINT NOT NULL REFERENCES users(id),
    total       DECIMAL(12,2) NOT NULL,
    note        TEXT,
    placed_at   TIMESTAMP NOT NULL
);
Что получитсяentities.ts
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";

@Entity("users")
export class Users {
  @PrimaryColumn({ type: "bigint" })
  id!: string;

  @Column({ type: "varchar", length: 255, unique: true })
  email!: string;

  @Column({ type: "varchar", length: 120, nullable: true, name: "full_name" })
  fullName!: string | null;

  @Column({ type: "boolean", name: "is_active" })
  isActive!: boolean;

  @Column({ type: "timestamp", name: "created_at" })
  createdAt!: Date;
}

@Entity("orders")
export class Orders {
  @PrimaryColumn({ type: "bigint" })
  id!: string;

  @Column({ type: "bigint", name: "user_id" })
  userId!: string;

  @Column({ type: "decimal", precision: 12, scale: 2 })
  total!: number;

  @Column({ type: "text", nullable: true })
  note!: string | null;

  @Column({ type: "timestamp", name: "placed_at" })
  placedAt!: Date;

  @ManyToOne(() => Users)
  @JoinColumn({ name: "user_id" })
  users!: Users;
}
Открыть редактор

Скрипт остаётся в браузере: и разбор, и генерация идут на вашей машине, на сервер ничего не уходит.

Как ложатся типы

в SQLв модели
BIGINTstring
VARCHAR(255)string
BOOLEANboolean
TIMESTAMPDate
DECIMAL(12,2)number
TEXTstring | null
Необязательное поле
nullable: true
Имя колонки
name: "full_name"
Связь
@ManyToOne(() => Users)