Prisma → SQL: DDL из описания схемы
Схему не обязательно приносить в SQL. Ниже — настоящий перевод: слева описание на Prisma, справа то, что редактор из него делает.
Что на входеschema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique @db.VarChar(255)
fullName String? @map("full_name")
createdAt DateTime @default(now()) @map("created_at")
orders Order[]
@@map("users")
}
model Order {
id Int @id @default(autoincrement())
userId Int @map("user_id")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
total Decimal @db.Decimal(12, 2)
placedAt DateTime @map("placed_at")
@@index([userId])
@@map("orders")
}Что получитсяschema.sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email varchar(255) NOT NULL UNIQUE,
full_name text,
created_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id integer NOT NULL,
total decimal(12, 2) NOT NULL,
placed_at timestamp(3) NOT NULL
);
ALTER TABLE orders ADD CONSTRAINT fk_orders_user_id FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE;
CREATE INDEX idx_orders_user_id ON orders (user_id);Открыть редактор
Скрипт остаётся в браузере: и разбор, и генерация идут на вашей машине, на сервер ничего не уходит.
Что во что превращается
| в исходнике | в SQL |
|---|---|
@id @default(autoincrement()) | SERIAL PRIMARY KEY |
String @db.VarChar(255) | varchar(255) |
@unique | UNIQUE |
@map("full_name") | full_name |
@default(now()) | DEFAULT CURRENT_TIMESTAMP |
onDelete: Cascade | REFERENCES users (id) ON DELETE CASCADE |
@@map("users") | CREATE TABLE users |