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 | в модели |
|---|---|
BIGINT | string |
VARCHAR(255) | string |
BOOLEAN | boolean |
TIMESTAMP | Date |
DECIMAL(12,2) | number |
TEXT | string | null |
- Необязательное поле
nullable: true- Имя колонки
name: "full_name"- Связь
@ManyToOne(() => Users)