erd.sketch

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

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

Что на входе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
);
Что получитсяmodels.rs
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Users {
    pub id: i64,
    pub email: String,
    pub full_name: Option<String>,
    pub is_active: bool,
    pub created_at: chrono::NaiveDateTime,
}

#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Orders {
    pub id: i64,
    pub user_id: i64,  // → users.id
    pub total: rust_decimal::Decimal,
    pub note: Option<String>,
    pub placed_at: chrono::NaiveDateTime,
}
Открыть редактор

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

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

в SQLв модели
BIGINTi64
VARCHAR(255)String
BOOLEANbool
TIMESTAMPchrono::NaiveDateTime
DECIMAL(12,2)rust_decimal::Decimal
TEXTOption<String>
Необязательное поле
Option<String>
Имя колонки
full_name
Связь
// → users.id