entでクエリを確認する方法
entでクエリを確認がわからなかったのでメモ。
全てのクエリを出力したい場合
optionsで指定する
clientを作成する時にoptionsにDebugを指定することで実現可能
func NewDBClient() *ent.Client { user := "user" password := "pass" port := "5432" host := "localhost" dbName := "testdb" url := fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=disable", user, password, host, port, dbName) // ここでDebug()オプションを指定 options := []ent.Option{ent.Debug()} client, err := ent.Open("postgres", url, options...) if err != nil { fmt.Printf("failed connecting to postgres: %v", err) } return client }
clientで指定する
func NewDBClient() *ent.Client { user := "user" password := "pass" port := "5432" host := "localhost" dbName := "testdb" url := fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=disable", user, password, host, port, dbName) client, err := ent.Open("postgres", url) if err != nil { fmt.Printf("failed connecting to postgres: %v", err) } // debugを指定する client = client.Debug() return client }
個別のクエリを出力したい場合
クエリを出力したい箇所だけDebug()を指定することでログに出力される
users, err := client.Debug().User.Query().Where(user.Name("user1")).All(ctx)
参考
微妙に公式では言及されていないのはなんでだろう・・・