Code Generation

Bob は「データベースファースト」の ORM です。つまり、まずデータベーススキーマを作成する必要があります。

Available Drivers

Bob は以下のデータベースドライバーをサポートしています:

DatabaseDriver
PostgreSQLbobgen-psql
MySQLbobgen-mysql
SQLitebobgen-sqlite
SQL Filesbobgen-sql

Features

Bob のコード生成機能は以下の豊富な機能を提供します:

  • 完全なモデル生成: データベーススキーマから包括的なモデルを生成
  • ファクトリー生成: テスト用のファクトリーを自動生成
  • SQL クエリコード生成: 手書きの SQL クエリから型安全なコードを生成
  • 極めて高速: 大規模なデータベースでも高速な生成
  • 強い型付け: 型安全なクエリの生成
  • フック: データベース操作の前後で実行される処理
  • テーブルおよびカラムフィルタリング: 生成対象の制御
  • カスタム構造体タグ: 独自のタグを追加可能
  • Enum 型: 列挙型のサポート
  • データベースビュー: ビューからのモデル生成
  • 生成/計算カラム: 計算されたカラムのサポート
  • 複数カラム外部キー: 複合外部キーのサポート
  • リレーションシップ: 外部キーベースのリレーションシップ自動検出
  • Eager Loading: 再帰的な Eager Loading をサポート
  • 関連モデル読み込み: Left-join または別クエリによる関連データ取得
  • ユーザー設定リレーションシップ: カスタムリレーションシップの定義
  • その他多数の機能

Generating code

コード生成は、gen パッケージの方言固有のコマンドを使用して実行されます。

Example Usage

PostgreSQL

# 環境変数を使用した生成
PSQL_DSN=postgres://user:pass@host:port/dbname go run github.com/stephenafamo/bob/gen/bobgen-psql@latest

# または設定ファイルを使用
go run github.com/stephenafamo/bob/gen/bobgen-psql@latest --config=bobgen.yaml

MySQL

# 環境変数を使用した生成
MYSQL_DSN=user:pass@tcp(host:port)/dbname go run github.com/stephenafamo/bob/gen/bobgen-mysql@latest

# または設定ファイルを使用
go run github.com/stephenafamo/bob/gen/bobgen-mysql@latest --config=bobgen.yaml

SQLite

# 環境変数を使用した生成
SQLITE_DSN=path/to/database.db go run github.com/stephenafamo/bob/gen/bobgen-sqlite@latest

# または設定ファイルを使用
go run github.com/stephenafamo/bob/gen/bobgen-sqlite@latest --config=bobgen.yaml

SQL Files

# SQL ファイルから生成
go run github.com/stephenafamo/bob/gen/bobgen-sql@latest --config=bobgen.yaml

各ドライバーは、特定のデータベースに最適化された機能を提供し、データベース接続情報や設定オプションは環境変数または設定ファイルで指定できます。