miyazi888の覚え書き日記

学習したことを書き留めてます。

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)

参考

微妙に公式では言及されていないのはなんでだろう・・・

entで実行されたSQLを確認する - Qiita