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 | в модели |
|---|---|
BIGINT | int64 |
VARCHAR(255) | type:varchar(255) |
BOOLEAN | bool |
TIMESTAMP | time.Time |
DECIMAL(12,2) | float64 |
TEXT | *string |
- Необязательное поле
*string- Имя колонки
column:full_name- Связь
foreignKey:UserID;references:ID