2024-04-11 23:04:30 +02:00
|
|
|
// Copyright (C) NHR@FAU, University Erlangen-Nuremberg.
|
2023-02-13 13:52:17 +01:00
|
|
|
// All rights reserved.
|
|
|
|
// Use of this source code is governed by a MIT-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package repository
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/ClusterCockpit/cc-backend/pkg/log"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Hooks satisfies the sqlhook.Hooks interface
|
|
|
|
type Hooks struct{}
|
|
|
|
|
|
|
|
// Before hook will print the query with it's args and return the context with the timestamp
|
|
|
|
func (h *Hooks) Before(ctx context.Context, query string, args ...interface{}) (context.Context, error) {
|
2023-06-20 15:47:38 +02:00
|
|
|
log.Debugf("SQL query %s %q", query, args)
|
2023-02-13 13:52:17 +01:00
|
|
|
return context.WithValue(ctx, "begin", time.Now()), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// After hook will get the timestamp registered on the Before hook and print the elapsed time
|
|
|
|
func (h *Hooks) After(ctx context.Context, query string, args ...interface{}) (context.Context, error) {
|
|
|
|
begin := ctx.Value("begin").(time.Time)
|
2023-06-20 15:47:38 +02:00
|
|
|
log.Debugf("Took: %s\n", time.Since(begin))
|
2023-02-13 13:52:17 +01:00
|
|
|
return ctx, nil
|
|
|
|
}
|