entの初期設定
筆者のレベル
最近Web開発の勉強を始めてHTML,CSS,JavaScriptの基礎が分かる程度。
プロジェクトに導入
# 作りたいテーブルごとにスキーマを作成
$ go run -mod=mod entgo.io/ent/cmd/ent new <スキーマ名>
上記のコマンドを実行することで、プロジェクトフォルダにentがインストールされ、entのフォルダが追加される。
スキーマにフィールドを追加
各スキーマごとに作られたent/schema/<スキーマ名>.goを編集してfieldを追加する。fieldの作成は公式ドキュメントを参考にしてください。
スキーマを設定し終わったら下記のコマンドを実行
$ go generate ./ent
上記のコマンドを実行すると下記のようなフォルダ構成がentフォルダの下に作られる
ent
├── client.go
├── config.go
├── context.go
├── ent.go
├── generate.go
├── mutation.go
... truncated
├── schema
│ └── user.go # このスキーマを作成
├── tx.go
├── user
│ ├── user.go
│ └── where.go
├── user.go
├── user_create.go
├── user_delete.go
├── user_query.go
└── user_update.go
上記はent/schema/user.goのスキーマを作成した後にコマンドを実行した例。
dbサーバとの接続
Postgresとの接続
Postgres以外のdbの接続は以下の公式ドキュメントを参考にしてください
import (
~
~
~
"project_folder/ent" #プロジェクトにあるentフォルダ
_ "github.com/lib/pq" #postgresのドライバ
)
func main(){
#APIサーバとdbサーバを接続(設定は各自のyamlファイルなどに記載してあるものを記述)
client, err := ent.Open("postgres","host=<host> port=<port> user=<user> dbname=<database> password=<pass>")
#先ほど作成したSchemaをPostgresのテーブルに移行(テーブルを作成)
if err := client.Schema.Create(context.Background()); err != nil {
log.Fatalf("failed creating schema resources: %v", err)
}
}
テーブルに対しての操作は公式ドキュメントを参考にしてください。(真ん中の方にあります)