SQL → GORM
Golang ORM & データベースモデリング

SQL DDL から Golang GORM 構造体モデル生成ツール

SQLのCREATE TABLEスキーマからGORMタグ、JSONタグ、適切なGo型マッピングを備えたGolang構造体(struct)モデルを瞬時に自動生成します。

100% クライアント側プライバシー
サーバー送信ゼロ
プリセット:
GORMモデルコンパイラ設定 & スキーママッピング
auto•pkg models•*Pointers
SQL DDL スキーマ(3 テーブル)
// Code generated by ToolsAA SQL to Golang GORM Generator. DO NOT EDIT.
package models

import (
	"github.com/google/uuid"
	"gorm.io/datatypes"
	"gorm.io/gorm"
	"time"
)

// ============================================================================
// Custom Enum Definitions
// ============================================================================

type UserRole string

const (
	UserRoleOwner UserRole = "OWNER"
	UserRoleAdmin UserRole = "ADMIN"
	UserRoleMember UserRole = "MEMBER"
	UserRoleGuest UserRole = "GUEST"
)

type SubscriptionTier string

const (
	SubscriptionTierFree SubscriptionTier = "FREE"
	SubscriptionTierPro SubscriptionTier = "PRO"
	SubscriptionTierEnterprise SubscriptionTier = "ENTERPRISE"
)

// Organization maps to database table "organizations"
type Organization struct {
	ID                   *uuid.UUID       `gorm:"column:id;primaryKey;type:uuid;default:gen_random_uuid()" json:"id,omitempty"`
	Slug                 string           `gorm:"column:slug;type:varchar(80);not null;uniqueIndex:idx_organizations_slug" json:"slug"`
	Name                 string           `gorm:"column:name;type:varchar(120);not null" json:"name"`
	Tier                 SubscriptionTier `gorm:"column:tier;type:varchar(64);not null;default:FREE" json:"tier"`
	MaxSeats             int              `gorm:"column:max_seats;not null;default:5" json:"max_seats"`
	IsActive             bool             `gorm:"column:is_active;type:boolean;not null;default:true" json:"is_active"`
	Settings             *datatypes.JSON  `gorm:"column:settings;type:jsonb" json:"settings,omitempty"`
	CreatedAt            time.Time        `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"`
	UpdatedAt            time.Time        `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"`
	DeletedAt            gorm.DeletedAt   `gorm:"column:deleted_at;index" json:"deleted_at,omitempty"`
}

// TableName specifies the database table name for Organization
func (Organization) TableName() string {
	return "organizations"
}

// User maps to database table "users"
type User struct {
	ID                   *uuid.UUID       `gorm:"column:id;primaryKey;type:uuid;default:gen_random_uuid()" json:"id,omitempty"`
	OrganizationID       uuid.UUID        `gorm:"column:organization_id;type:uuid;not null;index:idx_users_org" json:"organization_id"`
	Email                string           `gorm:"column:email;type:varchar(255);not null;uniqueIndex:idx_users_email" json:"email"`
	FullName             *string          `gorm:"column:full_name;type:varchar(120)" json:"full_name,omitempty"`
	Role                 UserRole         `gorm:"column:role;type:varchar(64);not null;default:MEMBER" json:"role"`
	AvatarURL            *string          `gorm:"column:avatar_url;type:varchar(500)" json:"avatar_url,omitempty"`
	IsVerified           bool             `gorm:"column:is_verified;type:boolean;not null;default:false" json:"is_verified"`
	Preferences          *datatypes.JSON  `gorm:"column:preferences;type:jsonb" json:"preferences,omitempty"`
	CreatedAt            time.Time        `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"`
	UpdatedAt            time.Time        `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"`
	DeletedAt            gorm.DeletedAt   `gorm:"column:deleted_at;index" json:"deleted_at,omitempty"`
	Organization         *Organization    `gorm:"foreignKey:OrganizationID;references:ID;constraint:OnDelete:CASCADE" json:"organizations,omitempty"`
}

// TableName specifies the database table name for User
func (User) TableName() string {
	return "users"
}

// AuditLog maps to database table "audit_logs"
type AuditLog struct {
	ID                   *int64           `gorm:"column:id;primaryKey;autoIncrement;type:bigint" json:"id,omitempty"`
	OrganizationID       uuid.UUID        `gorm:"column:organization_id;type:uuid;not null" json:"organization_id"`
	UserID               *uuid.UUID       `gorm:"column:user_id;type:uuid" json:"user_id,omitempty"`
	Action               string           `gorm:"column:action;type:varchar(100);not null;index:idx_audit_logs_action" json:"action"`
	IPAddress            *string          `gorm:"column:ip_address;type:varchar(45)" json:"ip_address,omitempty"`
	UserAgent            *string          `gorm:"column:user_agent;type:text" json:"user_agent,omitempty"`
	Payload              *datatypes.JSON  `gorm:"column:payload;type:jsonb" json:"payload,omitempty"`
	CreatedAt            time.Time        `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"`
	Organization         *Organization    `gorm:"foreignKey:OrganizationID;references:ID;constraint:OnDelete:CASCADE" json:"organizations,omitempty"`
	User                 *User            `gorm:"foreignKey:UserID;references:ID;constraint:OnDelete:SET NULL" json:"users,omitempty"`
}

// TableName specifies the database table name for AuditLog
func (AuditLog) TableName() string {
	return "audit_logs"
}
ゼロアロケーション構造体

正確なメモリ配置、プリミティブ型サイジング、慣用的なフィールドタグを備えた純粋な Go 構造体。

GORM v2 タグ&関連付け

primaryKey、foreignKey、autoIncrement、uniqueIndex、カスタム TableName() メソッドを完全サポート。

型安全な NULL 処理

ポインタ型または sql.Null* 型を設定可能で、nil ポインタ参照によるパニックを防止。

完全ローカルのプライバシーサンドボックス

すべての SQL AST 解析と Golang コード生成はブラウザのメモリ内で 100% 実行されます。外部への送信は一切ありません。

高精度なマルチ方言 GORM v2 対応

PostgreSQL(UUID, JSONB, TIMESTAMPTZ)、MySQL(AUTO_INCREMENT, DATETIME, Decimal)、SQLite(INTEGER PK)を網羅。

本番導入可能な Go パッケージ構成

Go の慣用略語(ID, URL, UUID)対応、GORM リポジトリ CRUD メソッド、トランザクションヘルパー、フック関数を出力。

技術リファレンス&アーキテクチャガイド

SQL DDLからGolang GORM構造体モデル生成ツール — リファレンスガイド

SQLのCREATE TABLEスキーマからGORMタグ、JSONタグ、適切なGo型マッピングを備えたGolang構造体(struct)モデルを瞬時に自動生成します。

主要パラメータ&設定項目

SQL方言 (SQL Dialect)Enum (MySQL | PostgreSQL | SQLite | SQL Server)

DDL構文の解析、データ型変換、主キー制約の解釈に使用する対象SQLダイアレクト。

初期値: MySQL
NULL許容フィールドのマッピング (Nullable Field Mapping)Enum (ポインタ (*T) | sql.Null* | プリミティブ型)

NULL許容カラムをGo構造体フィールドに変換する方式(ポインタ型 *string または標準パッケージの sql.NullString など)。

初期値: ポインタ (*T)
構造体タグ生成 (Struct Tag Generators)Multi-Select (gorm, json, db, yaml)

生成されるGoモデルの各フィールドに付与するメタデータタグの組み合わせ。

初期値: gorm, json
gorm.Modelの埋め込み (Embed gorm.Model)Boolean

id、created_at、updated_at、deleted_atカラムが検出された場合にgorm.Modelを構造体に自動埋め込みします。

初期値: true
TableName()メソッドの生成 (Generate TableName())Boolean

GORMによる自動複数形化を防ぎ、DDLで定義された正確なテーブル名とバインドするためのTableName()レシーバーメソッドを出力します。

初期値: true

プロの活用テクニック&推奨設定

gorm.Modelによる論理削除(Soft Delete)の活用

スキーマにdeleted_atやgorm.DeletedAtカラムが含まれる場合、gorm.Modelの埋め込みを有効化することでGORMの標準論理削除機構が自動的に適用されます。

time.Timeによる厳密な日時管理

TIMESTAMP、DATETIME、TIMESTAMPTZカラムは文字列ではなくtime.Timeまたは*time.Timeへマッピングし、gorm:"type:timestamp"タグを指定することでタイムゾーン変換やゼロ値ハンドリングを安全に行えます。

GORMタグとJSONタグの併用によるクリーンアーキテクチャ

GORMのカラムマッピングタグ(gorm:"column:user_id;primaryKey")とAPI用のタグ(json:"user_id,omitempty")を同時に生成することで、DB層とREST/gRPCレスポンス層の整合性を保てます。

PostgreSQLのJSONB型およびUUID型のネイティブ連携

PostgreSQL方言を選択した場合、JSON/JSONBカラムはgorm.io/datatypes.JSONに、UUIDカラムはgoogle/uuid型またはstringに正しくバインドされます。

よくあるトラブルと解決策

符号なし整数(UNSIGNED)やBIGINTが通常のint型に変換される問題

SQL方言設定を確認してください。BIGINT UNSIGNEDはuint64に、INT UNSIGNEDはuint32にマッピングすることで、ランタイムでのオーバーフローや桁落ちを防げます。

外部キー定義からリレーション構造体が生成されない

CREATE TABLE文内でFOREIGN KEY (user_id) REFERENCES users(id)の明示的な構文を使用しているか確認してください。パーサーが参照テーブルを解析して関連構造体への参照ポインタを導出します。

カラム名にSQL予約語や特殊記号が含まれる場合の構文エラー

カラム名をバッククォート(`)または二重引用符(")で囲んでください。ジェネレーターが自動的にエスケープ記号を除去し、gorm:"column:reserved_word"タグを付与します。

よくある質問 (FAQ)

NULL許容(NULLABLE)なSQLカラムはどのようにGo型へマッピングされますか?▼

NOT NULL制約のないカラムは、JSONシリアライズ時にnullとして扱えるGoのポインタ型(例: *string, *int64)または標準ライブラリのNull型(例: sql.NullString, sql.NullTime)へ安全にマッピングされます。

生成されるGoコードはGORM v2の仕様に準拠していますか?▼

はい。primaryKey、autoIncrement、column:、type:、uniqueIndexなど、GORM v2の最新仕様に完全準拠した構造体タグが出力されます。

なぜTableName()レシーバー関数の生成が推奨されるのですか?▼

GORMはデフォルトで構造体名を英語複数形化してテーブル名を推定します(例: User -> users)。TableName()関数を生成することで、DDLで定義された正確なテーブル名とのマッピングが保証されます。

入力したSQL DDLスキーマやデータベース情報が外部サーバーへ送信されることはありますか?▼

いいえ。すべてのSQL構文解析、トークナイズ、Goコードの生成処理はお使いのブラウザ内部(クライアントサイドASTエンジン)で完結し、外部ネットワークへのデータ送信は一切行われません。

関連するおすすめ開発ツール

すべてのツール →
SQL DDLからSequelize TypeScriptモデルへの変換ジェネレーター開発ツール

SQLのCREATE TABLE文からSequelizeのTypeScriptモデル、DataTypes定義、CreationOptional属性、およびModel.init初期化コードを生成するための包括的開発者リファレンス。

ツールを開く→
Json To Elixir Ecto開発ツール

生のJSONデータからElixir Ectoスキーマ、マイグレーション、Changeset、Dialyzer型仕様(typespec)を自動生成するためのアーキテクチャ設計仕様書。

ツールを開く→
JSON to Scala 3 & Scala 2 Case Class 変換ツール開発ツール

JSONペイロードを高精度に解析し、型安全なScala 3およびScala 2のケースクラスへ変換。Circe、Play JSON、zio-jsonコーデックの自動導出に対応。

ツールを開く→
JSON to PHP 8.2+ 型付き Readonly DTO ジェネレーター開発ツール

JSON データをコンストラクタプロモーションと fromArray デシリアライザを備えた最新の PHP 8.2+ readonly class DTO(データ転送オブジェクト)に変換します。

ツールを開く→
TypeScript to GraphQL SDL開発ツール

TypeScriptのインターフェース、型エイリアス、列挙型を本番環境向けGraphQLスキーマ定義言語(SDL)へ変換するための開発者リファレンス。

ツールを開く→
TypeScript インターフェースから Protocol Buffers proto3 への変換ツール開発ツール

TypeScriptのinterfaceやtype定義を、インクリメンタルなタグ番号を持つProtobuf 3構文のmessage、field、enumに変換します。

ツールを開く→