🥶
【Go】ent公式ドキュメントから理解するまで
docs:~ で公式ドキュメントのどこから取ってるか書いてます
途中参加のプロジェクトでentが使われてたのでキャッチアップ
全部網羅するとかではなくて何も知らない奴が公式docsから学びを得る過程を書いてます
定義場所
docs: Getting Started / Quick Introduction
ent/schema/hoge.goにfield等を定義
go generate ./ent
によって ent/ と ent/hoge/ にhogeに関するファイルが自動生成される
ent
├── schema
│ └── hoge.go
├── tx.go
├── hoge
│ ├── hoge.go
│ └── where.go
├── hoge.go
├── hoge_create.go
├── hoge_delete.go
├── hoge_query.go
└── hoge_update.go
その定義の仕方
docs: Schema / ~
フィールド, リレーションの定義の仕方などを書いてる
使う
docs: Code Generation / CRUD API
create
a8m, err := client.User. // UserClient.
Create(). // User create builder.
SetName("a8m"). // Set field value.
SetNillableAge(age). // Avoid nil checks.
AddGroups(g1, g2). // Add many edges.
SetSpouse(nati). // Set unique edge.
Save(ctx) // Create and return.
setfield名(value)でsetしてる
よく見たら上で生成されたent/hoge_create.goに定義されてる
CRUD APIなのにReadについて全然かかれてないな...👀
update many
n, err := client.User. // UserClient.
Update(). // User update builder.
Where( //
user.Or( // (age >= 30 OR name = "bar")
user.AgeGT(30), //
user.Name("bar"), // AND
), //
user.HasFollowers(), // UserHasFollowers()
). //
SetName("foo"). // Set field name.
Save(ctx) // exec and return.
お,where使ってる
AgeGT(30) -> age >= 30 ってことはGreater thanか
定義元にジャンプすると自動生成された ent/hoge/where.go にあった
ここにあるやつからwhereを使うっぽい
クエリを使いたい時はent/hoge_query.goから使うっぽい
終わり
これだけわかればとりあえず書けそう
他に必要そうなのあれば後から加えたのがわかるように追記します
Discussion