erd.sketch

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

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

Что на входе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.go
import (
	"time"
)

type Users struct {
	ID        int64     `gorm:"column:id;primaryKey"`
	Email     string    `gorm:"column:email;type:varchar(255);not null;unique"`
	FullName  *string   `gorm:"column:full_name;type:varchar(120)"`
	IsActive  bool      `gorm:"column:is_active;not null"`
	CreatedAt time.Time `gorm:"column:created_at;not null"`
}

func (Users) TableName() string { return "users" }

type Orders struct {
	ID       int64     `gorm:"column:id;primaryKey"`
	UserID   int64     `gorm:"column:user_id;not null"`
	Total    float64   `gorm:"column:total;not null"`
	Note     *string   `gorm:"column:note"`
	PlacedAt time.Time `gorm:"column:placed_at;not null"`
	Users    *Users    `gorm:"foreignKey:UserID;references:ID"`
}

func (Orders) TableName() string { return "orders" }
Открыть редактор

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

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

в SQLв модели
BIGINTint64
VARCHAR(255)type:varchar(255)
BOOLEANbool
TIMESTAMPtime.Time
DECIMAL(12,2)float64
TEXT*string
Необязательное поле
*string
Имя колонки
column:full_name
Связь
foreignKey:UserID;references:ID